Support formation Rapports Power BI
Share
Explore
Pages
DAX (le langage) et Power BI

icon picker
DAX pour la présentation

Pré‑requis rapides

Modèle en étoile avec tables de dimensions (Date, Produit, Territoire, Client…)
Table Date marquée comme table de dates
Notions
ALLSELECTED : supprime les filtres “internes” (donc à l’intérieur de la vignette) et applique des filtres “externes” (segments...).
VALUES : valeurs uniques d’une colonne
SELECTEDVALUE : retourne une seule valeur quand le filtrage produit une seule valeur, sinon retourne le résultat alternatif.
CONCATENATEX : CONCATENATEX ( <Table>, <Expression> [, <Delimiter>] [, <OrderBy_Expression> [, [<Order>] [, <OrderBy_Expression> [, [<Order>] [, … ] ] ] ] ] )
SWITCH(TRUE()) : SWITCH ( TRUE, [A] > [B], "First case", [A] = [B], "Second case", [A] = 0, "Third case", "Fourth case")

1 Titres dynamiques « prêts à l’emploi »

1.1 Titre avec période et filtres principaux

Afficher Mesure + Période + Segments en tenant compte des sélections (segments) courantes.
Titre – Ventes & contexte :=
VAR DateMinSel = MINX(ALLSELECTED('Date'[Date]), 'Date'[Date])
VAR DateMaxSel = MAXX(ALLSELECTED('Date'[Date]), 'Date'[Date])
VAR Periode = IF(
NOT ISBLANK(DateMinSel) && NOT ISBLANK(DateMaxSel),
FORMAT(DateMinSel, "dd mmm yyyy") & " – " & FORMAT(DateMaxSel, "dd mmm yyyy"),
"Toutes périodes"
)
VAR Pays =
IF(HASONEVALUE('Territoire'[Pays]), SELECTEDVALUE('Territoire'[Pays]), "Tous pays")
VAR Categ =
VAR liste = CONCATENATEX(VALUES(Produit[Catégorie]), Produit[Catégorie], ", ", Produit[OrdreCat])
RETURN IF(liste="", "Toutes catégories", liste)
RETURN
"Ventes : " & FORMAT([CA], "# ##0 €") & " | " & Periode & " | " & Pays & " | " & Categ

À lier sur : Titre de la page (ou visuel) → fxChamp = Titre – Ventes & contexte.
Variante courte (année/mois)
Titre – Période courte :=
VAR y = MINX(ALLSELECTED('Date'[Année]), 'Date'[Année])
VAR m = MINX(ALLSELECTED('Date'[MoisNom]), 'Date'[MoisNom])
RETURN COALESCE("Période : " & m & " " & y, "Toutes périodes")

1.2 Sous‑titre « filtre actif » générique

Sous‑titre – Filtre actif (Pays) :=
"Filtre Pays : " & COALESCE(SELECTEDVALUE('Territoire'[Pays]), "Tous")
À lier sur : Sous‑titre du visuel.

1.3 Titre qui s’adapte au niveau de hiérarchie

Changer le libellé selon le niveau (Catégorie → Sous‑catégorie → Produit).
Titre – Niveau de détail :=
VAR Label =
SWITCH(TRUE(),
ISINSCOPE(Produit[Produit]), "Détail produit",
ISINSCOPE(Produit[Sous‑catégorie]), "Détail sous‑catégorie",
ISINSCOPE(Produit[Catégorie]), "Détail catégorie",
"Vue d’ensemble"
)
RETURN Label & " – " & FORMAT([CA], "# ##0 €")

2 Icônes et badges d’état (Unicode & images)

2.1 Icônes Unicode sans images

Pratiques pour des cartes, tables et matrices. Police recommandée : Segoe UI Symbol.
Exemples d’icônes :
UNICHAR(9650) (hausse)
UNICHAR(9660) (baisse)
UNICHAR(9654) (stable)
UNICHAR(9888) (alerte)
Mesure “delta” + icône
Δ % vs N‑1 := DIVIDE([CA] - [CA N‑1], [CA N‑1])

Icône – Tendance :=
VAR d = [Δ % vs N‑1]
RETURN
SWITCH(TRUE(),
d >= 0.02, UNICHAR(9650), -- ▲
d <= -0.02, UNICHAR(9660), -- ▼
TRUE, UNICHAR(9654) -- ►
)
Couleur associée (hex)
Couleur – Tendance :=
VAR d = [Δ % vs N‑1]
RETURN
SWITCH(TRUE(),
ISBLANK(d), "#808080", -- gris si non applicable
d >= 0.02, "#1A9C2C", -- vert
d <= -0.02, "#D13438", -- rouge
"#8A8886" -- neutre
)
À lier sur : Format conditionnel → Couleur police de la mesure Icône – Tendance dans un visuel Table/Carte.
Badge combiné (icône + texte)
Badge – Tendance :=
VAR d = [Δ % vs N‑1]
RETURN
[ Icône – Tendance ] & " " & FORMAT(d, "0.0%")

2.2 Icônes via URL d’image (table de correspondance)

Table déconnectée Icones
SeuilMin (num), SeuilMax (num), URL (texte), Nom (optionnel)
Mesure qui retourne l’URL selon Δ
URL – Icône tendance :=
VAR d = [Δ % vs N‑1]
RETURN
MAXX(
FILTER(Icones, d >= Icones[SeuilMin] && d < Icones[SeuilMax]),
Icones[URL]
)
À lier sur : URL d’image d’une colonne/mesure dans Table/Carte. Activer : Catégorie de données → URL d’image.

3 Mesures « cosmétique » utiles

3.1 Valeur avec unité intelligente

Texte – Valeur mise à l’échelle :=
VAR v = [CA]
VAR av = ABS(v)
VAR Suffix = SWITCH(TRUE(),
av >= 1e9, " Md€",
av >= 1e6, " M€",
av >= 1e3, " k€",
" €"
)
VAR Scaled = SWITCH(TRUE(),
av >= 1e9, v/1e9,
av >= 1e6, v/1e6,
av >= 1e3, v/1e3,
v
)
RETURN FORMAT(Scaled, "# ##0.##") & Suffix

3.2 Gestion des BLANK en tiret cadratin

Texte – Valeur ou tiret :=
VAR v = [Marge %]
RETURN IF(ISBLANK(v), UNICHAR(8212), FORMAT(v, "0.0%"))

3.3 Lister des filtres multiples proprement

Texte – Liste segments (tri perso) :=
VAR liste = CONCATENATEX(
VALUES('Territoire'[Pays]),
'Territoire'[Pays], ", ", 'Territoire'[OrdrePays]
)
RETURN IF(liste="", "Tous pays", liste)

3.4 Message d’alerte contextualisé

Alerte – Période incomplète :=
VAR MaxDataDate = CALCULATE(MAX('Faits'[Date]), ALL('Date'))
VAR MaxSelDate = MAX('Date'[Date])
RETURN IF(MaxSelDate < MaxDataDate, "⚠ Données partielles : période incomplète", BLANK())
À lier sur : Sous‑titre ou Note d’un visuel (format conditionnel du texte OU champ dans une carte).

4 Brancher vos mesures aux propriétés visuelles

Sélectionnez le visuel → volet Format.
Ouvrez la section Titre (ou Sous‑titre, Étiquette, Couleur…).
Cliquez sur fx (format conditionnel).
Choisissez Champ et pointez vers votre mesure DAX (texte/couleur/URL).
Validez. Testez avec différents slicers pour vérifier le comportement.
Astuce : créez un groupe de mesures (Display) pour tout ce qui est présentation ; plus simple à réutiliser.

5 Pattern réutilisables (copier‑coller)

5.1 Pattern – Titre complet

Display – Titre :=
VAR P = [Display – Période]
VAR Geo = [Display – Pays]
VAR Seg = [Display – Catégories]
RETURN "Ventes : " & [Texte – Valeur mise à l’échelle] & " | " & P & " | " & Geo & " | " & Seg

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.