Power BI
Créer des mesures DAX avancées pour vos analyses
Des indicateurs qui s’adaptent seuls à ce que le lecteur regarde : parts du total, comparaisons sur un an, classements. Les formules à connaître, expliquées une par une.
Une mesure DAX est un calcul que vous enregistrez une fois dans Power BI et qui s’adapte seul à ce que le lecteur regarde : un mois, une région, un produit. Elle évite de refaire le calcul dans chaque rapport ou de copier des chiffres dans Excel. Dans une entreprise, elle sert à obtenir des indicateurs fiables et partagés : marge, évolution sur un an, part du chiffre d’affaires, classement des clients.
À quoi sert une mesure DAX dans un rapport
Prenons une situation type. Un directeur financier veut suivre sa marge par gamme de produits, comparer chaque mois à l’année précédente et voir quels clients pèsent le plus. Avec un fichier Excel, il faut un onglet par vue, et chaque nouvelle question demande une nouvelle manipulation. Avec des mesures, le calcul est écrit une seule fois : le chiffre change selon la ligne du tableau, le filtre choisi ou le mois cliqué, et tout le monde obtient le même résultat.
DAX (Data Analysis Expressions) est le langage de ces calculs. Il ressemble aux formules d’Excel, mais il raisonne sur des tables et des colonnes, pas sur des cellules. Voici la mesure la plus simple, sur laquelle s’appuient toutes les autres de cet article :
CA = SUM(Ventes[Montant])
Le nom vient d’abord, puis le signe égal, puis le calcul. Placée dans un tableau par région, cette mesure donne le chiffre d’affaires de chaque région ; dans un graphique par mois, celui de chaque mois. Nos exemples utilisent quatre tables types : Ventes, Produits, Clients et Dates. Ils sont écrits avec la virgule : dans une interface en français, le séparateur devient le point-virgule (;) selon la langue ou les réglages régionaux.
Mesure ou colonne calculée : le bon choix
| Mesure | Colonne calculée | |
|---|---|---|
| Moment du calcul | À l’affichage, selon les filtres | À l’actualisation des données, ligne par ligne |
| Stockage | Rien n’est stocké | Le résultat occupe de la mémoire dans le modèle |
| Usage type | Totaux, ratios, évolutions | Valeur à filtrer ou à regrouper : une tranche de prix, par exemple |
En cas de doute, commencez par une mesure. Pour en créer une, sélectionnez une table dans le volet Données de Power BI Desktop, cliquez sur Nouvelle mesure dans l’onglet Accueil, écrivez la formule, puis validez avec Entrée. Le format (euros, pourcentage) se règle dans l’onglet Outils de mesure. Si ces bases sont nouvelles pour vous, commencez par les 10 formules DAX essentielles et par notre guide pour démarrer avec Power BI Desktop.
Changer le contexte de calcul avec CALCULATE
Le contexte de filtre est l’ensemble des filtres actifs au moment du calcul : la ligne du tableau, le segment choisi, la page. Il explique la plupart des résultats surprenants. CALCULATE sert à le modifier.
Ajouter un filtre
CA France = CALCULATE([CA], Clients[Pays] = "France")
Cette mesure donne le chiffre d’affaires français, quel que soit le pays sélectionné, car elle remplace tout filtre existant sur la colonne Pays. Si vous voulez ajouter le filtre sans écraser celui du lecteur, utilisez KEEPFILTERS :
CA France filtré = CALCULATE([CA], KEEPFILTERS(Clients[Pays] = "France"))
Retirer des filtres pour calculer une part
ALL retire les filtres d’une table ou d’une colonne. C’est la méthode classique pour calculer un pourcentage du total :
Part du CA =
DIVIDE(
[CA],
CALCULATE([CA], ALL(Produits))
)
Le dénominateur ignore le produit de la ligne, mais respecte les autres filtres, comme la période. ALLEXCEPT fait l’inverse : il retire tous les filtres de la table sauf ceux que vous citez. Cette mesure donne le poids d’un produit dans sa catégorie :
Part dans la catégorie =
DIVIDE(
[CA],
CALCULATE([CA], ALLEXCEPT(Produits, Produits[Categorie]))
)
Filtrer selon une mesure avec FILTER
Un filtre simple dans CALCULATE ne peut pas contenir de mesure. Pour garder les produits qui dépassent un seuil de vente, il faut FILTER, qui parcourt une liste et ne garde que les lignes qui remplissent la condition :
CA produits phares =
CALCULATE(
[CA],
FILTER(VALUES(Produits[Produit]), [CA] > 10000)
)
N’utilisez pas FILTER sur une table entière quand une condition sur une colonne suffit. Écrivez Ventes[Montant] > 1000 plutôt que FILTER(Ventes, Ventes[Montant] > 1000) : c’est plus rapide. Sachez aussi que ces filtres se cumulent avec ceux des pages et des segments, décrits dans notre article sur les filtres de Power BI.
Calculer ligne par ligne avec SUMX et RELATED
Quand le montant n’existe pas dans vos données, il faut le calculer ligne par ligne avant d’additionner. C’est le rôle des fonctions en X, comme SUMX ou AVERAGEX. Ici, la marge combine la quantité, le prix de vente et un coût qui se trouve dans une autre table :
Marge =
SUMX(
Ventes,
Ventes[Quantite] * (Ventes[PrixUnitaire] - RELATED(Produits[CoutUnitaire]))
)
RELATED va chercher une valeur dans la table située du côté « un » de la relation, ici le coût du produit de la vente. Il ne fonctionne que si un parcours ligne par ligne est en cours, d’où sa présence dans SUMX ou dans une colonne calculée. RELATEDTABLE fait le chemin inverse et renvoie les lignes liées du côté « plusieurs » : dans une colonne calculée de la table Produits, COUNTROWS(RELATEDTABLE(Ventes)) compte les ventes de chaque produit.
Passer par ces relations évite de fusionner physiquement les tables, ce qui alourdirait le modèle et dupliquerait les données. Une somme simple reste préférable dès qu’elle suffit : un parcours ligne par ligne coûte plus cher.
Comparer des périodes
La comparaison dans le temps est la demande la plus fréquente d’une direction. Elle repose sur une condition : une table de dates sans trou, reliée à vos ventes et déclarée comme telle (Outils de table, Marquer comme table de dates). Vous pouvez la créer avec une table calculée :
Dates = CALENDAR(DATE(2023, 1, 1), DATE(2026, 12, 31))
Les mesures de période deviennent alors très courtes :
CA N-1 = CALCULATE([CA], SAMEPERIODLASTYEAR(Dates[Date]))
CA mois précédent = CALCULATE([CA], DATEADD(Dates[Date], -1, MONTH))
CA cumulé année = TOTALYTD([CA], Dates[Date])
CA 3 mois glissants =
CALCULATE(
[CA],
DATESINPERIOD(Dates[Date], MAX(Dates[Date]), -3, MONTH)
)
CA depuis janvier 2026 =
CALCULATE(
[CA],
DATESBETWEEN(Dates[Date], DATE(2026, 1, 1), MAX(Dates[Date]))
)
Pour la croissance, on combine une valeur actuelle et une valeur de référence. Les variables, déclarées par VAR et utilisées après RETURN, rendent le calcul lisible :
Croissance CA =
VAR CAActuel = [CA]
VAR CAPrecedent = CALCULATE([CA], SAMEPERIODLASTYEAR(Dates[Date]))
RETURN
DIVIDE(CAActuel - CAPrecedent, CAPrecedent)
Ces indicateurs alimentent bien des visuels de suivi, et notre article sur la création de KPI dans Power BI montre comment les afficher face à un objectif.
Classer et mesurer la concentration
RANKX attribue un rang selon une valeur. Le classement se recalcule selon la période ou la région sélectionnée :
Rang produit =
IF(
ISINSCOPE(Produits[Produit]),
RANKX(ALLSELECTED(Produits[Produit]), [CA])
)
ISINSCOPE évite d’afficher un rang sur la ligne de total, et ALLSELECTED limite le classement aux produits visibles selon les filtres du lecteur. Avec ALL, le rang resterait celui de tout le catalogue.
L’analyse de Pareto sert à vérifier si une petite partie des clients ou des produits fait l’essentiel du chiffre d’affaires, la fameuse règle des 80/20. Elle demande une part cumulée :
Part cumulée =
VAR CAProduit = [CA]
VAR Cumul =
SUMX(
FILTER(ALLSELECTED(Produits[Produit]), [CA] >= CAProduit),
[CA]
)
RETURN
DIVIDE(Cumul, CALCULATE([CA], ALLSELECTED(Produits[Produit])))
Pour chaque produit, la formule additionne le chiffre d’affaires de tous ceux qui font au moins autant, puis divise par le total. Sur un catalogue de plusieurs milliers de références, ce calcul peut devenir lent : testez-le avant de le généraliser.
Écrire des mesures rapides et faciles à reprendre
- Nommez clairement.
CAPrecedentse comprend à la relecture,Var1non. Écrivez une mesure de base ([CA]) et réutilisez-la plutôt que de répéter la somme partout. - Utilisez des variables. Chaque variable est calculée une seule fois, ce qui évite les doublons. Piège : elle garde sa valeur. Dans
CALCULATE(CAActuel, SAMEPERIODLASTYEAR(Dates[Date])), le résultat reste le chiffre actuel, car le filtre arrive trop tard. - Divisez avec DIVIDE.
DIVIDE([CA], [Nombre de clients], 0)gère la division par zéro et renvoie la valeur du troisième argument, ou un vide si vous l’omettez. - Traitez les vides avec prudence.
COALESCE([CA], 0)etIF(ISBLANK([CA]), 0, [CA])affichent zéro à la place d’un vide, mais font apparaître dans vos tableaux des lignes sans aucune vente. - Évitez IFERROR par réflexe. Microsoft le déconseille quand l’erreur peut être prévue : il masque les vrais problèmes et ralentit le calcul. Testez plutôt la condition en amont.
- Mesurez avant d’optimiser. Dans Power BI Desktop, l’onglet Optimiser donne accès à l’Analyseur de performances, qui indique le temps pris par chaque visuel. Une table de dimension bien construite fait souvent plus pour la vitesse que la réécriture d’une formule.
Deux nouveautés valent le détour. Les calculs visuels, disponibles en version définitive depuis mai 2026, s’écrivent directement sur un visuel, par exemple Cumul = RUNNINGSUM([CA]). Les fonctions DAX définies par l’utilisateur, en version définitive depuis juin 2026, permettent d’écrire une logique une fois et de la réutiliser dans plusieurs mesures.
Quand faire appel à un expert DAX
Les mesures de cet article sont à votre portée, et les adapter à vos tables est un bon exercice. Un regard extérieur devient utile quand les chiffres du rapport ne concordent plus avec ceux de la comptabilité sans que personne sache pourquoi, quand les pages mettent plusieurs secondes à s’afficher malgré des formules simples, ou quand plusieurs services réclament des définitions différentes d’un même indicateur. Le problème vient alors souvent du modèle de données plus que de la formule. La page sur nos tableaux de bord Power BI montre comment ce travail s’organise dans un projet complet, et notre article sur la conception des tableaux de bord aide à présenter ces indicateurs.
Questions fréquentes
Quelle est la différence entre une mesure DAX et une colonne calculée ?
Une mesure se calcule à l’affichage et s’adapte aux filtres, sans rien stocker. Une colonne calculée est évaluée à l’actualisation, ligne par ligne, et son résultat occupe de la mémoire dans le modèle. Utilisez une mesure pour un total ou un ratio, et une colonne pour une valeur à filtrer ou à regrouper.
Pourquoi ma mesure DAX renvoie-t-elle un résultat faux ?
La cause la plus courante est le contexte de filtre : un filtre que vous n’aviez pas prévu s’applique, ou un filtre attendu a été retiré. Isolez le calcul dans un tableau simple, puis vérifiez les relations entre vos tables. Pour les comparaisons de dates, contrôlez aussi que la table de dates est complète et marquée comme telle.
Comment accélérer une mesure complexe ?
Repérez d’abord le visuel lent avec l’Analyseur de performances. Remplacez ensuite les parcours inutiles par des agrégations simples, les FILTER sur table entière par des conditions sur une colonne, et les calculs répétés par des variables. Si cela ne suffit pas, regardez le modèle : une table de faits filtrée par de petites tables de dimension répond mieux.
Faut-il utiliser RELATED ou fusionner les tables ?
Quand une relation existe, RELATED suffit dans une très grande majorité des cas. Il lit la valeur à travers la relation sans dupliquer de données, ce qui garde un modèle léger. Une fusion dans Power Query se justifie plutôt pour simplifier un modèle à la source, avant l’import.
Comment comparer deux périodes dans Power BI ?
Créez une table de dates reliée à vos données et marquée comme table de dates. Écrivez ensuite une mesure avec CALCULATE et SAMEPERIODLASTYEAR ou DATEADD, puis calculez l’écart avec DIVIDE. Les exemples ci-dessus s’adaptent à vos noms de tables en quelques minutes.
À lire ensuite
- Importer et utiliser des visuels personnalisés dans Power BIAjouter à Power BI un graphique qu’il ne propose pas d’office, comme un diagramme de Gantt : où le trouver, comment l’importer et ce qu’il faut vérifier avant de s’y fier.7 min
- Créer des signets pour la navigation dans les rapportsLes signets Power BI enregistrent l’état d’une page de rapport pour y revenir en un clic : plusieurs vues sur une seule page, des boutons de navigation, une présentation guidée.8 min
- Créer et suivre des KPI dans Power BIUn KPI compare un chiffre à son objectif et montre d’un coup d’œil si vous êtes en avance ou en retard. Voici comment le construire dans Power BI, avec ses formules et ses alertes.8 min
- Comment démarrer avec Power BI Desktop : Guide complet pour débutantsPower BI Desktop est l’application gratuite de Microsoft pour transformer vos fichiers en rapports interactifs. Voici un premier projet complet, de l’installation au partage.8 min