Support Formation DAX

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

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]), "Plusieurs 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

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")

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

Display – Période :=
VAR d1 = MINX(ALLSELECTED('Date'[Date]), 'Date'[Date])
VAR d2 = MAXX(ALLSELECTED('Date'[Date]), 'Date'[Date])
RETURN IF(OR(ISBLANK(d1), ISBLANK(d2)), "Toutes périodes", FORMAT(d1, "dd/mm/yyyy") & " – " & FORMAT(d2, "dd/mm/yyyy"))

Display – Pays :=
VAR s = CONCATENATEX(VALUES('Territoire'[Pays]), 'Territoire'[Pays], ", ")
RETURN IF(s="", "Tous pays", s)

Display – Catégories :=
VAR s = CONCATENATEX(VALUES(Produit[Catégorie]), Produit[Catégorie], ", ")
RETURN IF(s="", "Toutes catégories", s)

5.2 Pattern – Icône tendance + couleur

Display – Icône :=
VAR d = [Δ % vs N‑1]
RETURN SWITCH(TRUE(), d>=0.02, UNICHAR(9650), d<=-0.02, UNICHAR(9660), UNICHAR(9654))

Display – Couleur Icône :=
VAR d = [Δ % vs N‑1]
RETURN SWITCH(TRUE(), ISBLANK(d), "#808080", d>=0.02, "#107C10", d<=-0.02, "#C50F1F", "#605E5C")

6 Exemples d’intégration par type de visuel

Carte :
Titre = Display – Titre
Étiquette = [Texte – Valeur mise à l’échelle]
Sous‑titre = Alerte – Période incomplète
Table / Matrice :
Colonne Display – Icône (texte) avec couleur conditionnelle via Display – Couleur Icône
Colonne valeur formatée Texte – Valeur ou tiret
Bouton / Bouton info :
Texte = Alerte – Période incomplète
Tooltips (page info‑bulle) :
Titre = Titre – Niveau de détail

7 Bonnes pratiques

Séparer mesures métier et mesures Display (préfixe Display – ou dossier).*
Utiliser ALLSELECTED pour refléter exactement le contexte des slicers utilisateur.
Pour les listes (pays, catégories), CONCATENATEX(VALUES(...)) et prévoir un ordre (colonne de tri) pour un rendu naturel.
Centraliser les seuils (tendance, alertes) dans une table déconnectée.
Tester l’accessibilité : contrastes, taille des glyphes, éviter les icônes “couleur seule”.

8 Liste de contrôle (checklist)

Mesures Display créées et rangées dans un dossier
Titres/sous‑titres liés via fx (format conditionnel)
Icônes + couleurs testées sur 3 cas (hausse / baisse / stable)
Alerte de qualité de données présente
Accessibilité vérifiée (taille, contraste, alternative texte)

Annexes – Snippets utiles

Sélection unique/multiple générique
Texte – Sélection (colonne générique) :=
VAR s = CONCATENATEX(VALUES('Any'[Label]), 'Any'[Label], ", ")
RETURN IF(HASONEVALUE('Any'[Label]), s, IF(s="", "Tous", s))

Échelle KO / OK / Bon
Badge – Qualité :=
VAR x = [Qualité %]
RETURN SWITCH(TRUE(), x<0.9, "⚠ KO", x<0.98, "OK", "Bon")

Couleur par plage
Couleur – Qualité :=
VAR x = [Qualité %]
RETURN SWITCH(TRUE(), x<0.9, "#C50F1F", x<0.98, "#FF8C00", "#107C10")

Astuce : exportez ces mesures dans un .pbit (modèle Power BI) pour les réutiliser sur tous vos projets.
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.