Power BI : construire un graphique de comparaison dynamique entre deux années
Lecture : 10 min Niveau : Intermédiaire — Power BI + DAX
Il y a des visuels qui font leur effet immédiatement. Pas parce qu'ils sont jolis mais parce qu'ils répondent à une vraie question d'un coup d'œil. Ce graphique en fait partie : l'utilisateur sélectionne deux années, et le visuel affiche instantanément l'écart, avec les lignes de connexion et le badge de variance. Aucune interaction manuelle. Aucun filtre à jongler. Tout est automatique et tout se construit avec des fonctions DAX natives.

Les deux barres foncées marquent les années sélectionnées. Une ligne horizontale part de chacune. Une ligne verticale les relie dans la zone à droite. Le badge affiche l'écart absolu et le pourcentage — et tout se recalcule si l'utilisateur change les années dans le slicer.
Voici comment le construire, étape par étape. On suppose que vous avez déjà un histogramme en place avec vos données de ventes.
01 Le slicer qui n'agit pas comme un filtre
La base de tout le mécanisme
Premier réflexe : utiliser un slicer classique sur l'année. Problème — il masque les années non sélectionnées. Or on veut toutes les barres visibles à l'écran, avec seulement deux d'entre elles mises en évidence.
La solution passe par une table déconnectée : une table qui contient uniquement la liste des années, sans aucune relation avec le reste du modèle. Le slicer s'appuie dessus — il affiche les choix, transmet la sélection aux mesures DAX, mais ne filtre rien dans le graphique.
dimDate Slicer = VALUES( dimDate[Year] )Dans Format → Modifier les interactions, désactivez le filtre entre ce slicer et votre histogramme. Le slicer reste fonctionnel pour les mesures, mais les barres ne disparaissent plus.
02 Créer la zone vide à droite du graphique
Pour accueillir les lignes et le badge
Les lignes de connexion et le badge de variance ont besoin d'espace à droite des barres. Power BI ne propose pas de marge droite configurable — on la crée artificiellement, directement dans la table de dates.
Deux modifications dans votre calendrier calculé :
Prolongez la date de fin d'un an au-delà du maximum de vos données (si vos données vont jusqu'à fin 2025, le calendrier va jusqu'au 31/12/2026)
Ajoutez une colonne YearLYblank : elle retourne l'année en texte pour toutes les dates réelles, et une chaîne vide pour l'année fictive
-- Dans la table dimDate (calculée) VAR _MaxYear = YEAR( MAX( Financials[Date] ) ) VAR _ToDate = DATE( _MaxYear + 1, 12, 31 ) "YearLYblank", IF( YEAR( [Date] ) <= _MaxYear, YEAR( [Date] ) & "", "" )Dans le graphique, remplacez le champ d'axe X par YearLYblank. Clic droit sur le champ → Afficher les éléments sans données. La colonne vide apparaît à droite. Triez par YearLYblank en ordre croissant.
Pourquoi du texte et non des entiers ? Parce que les mesures de mise en forme conditionnelle et de lignes devront comparer des valeurs issues du slicer avec celles de l'axe. Mixer entiers et texte dans un seul champ est impossible — d'où le & "" qui force la conversion.
Créez des dashboards impactants
Formation Looker Studio pour des reportings clairs et automatisés.
03 Mettre en évidence les années choisies
Mise en forme conditionnelle par mesure
Pour colorier les deux barres sélectionnées différemment, il faut une mesure qui retourne 1 si la barre correspond à une année choisie, 0 sinon. Power BI applique ensuite une couleur conditionnelle selon cette valeur.
CF = IF( SELECTEDVALUE( dimDate[YearLYblank] ) = MIN( 'dimDate Slicer'[Year] ) & "" || SELECTEDVALUE( dimDate[YearLYblank] ) = MAX( 'dimDate Slicer'[Year] ) & "", 1, 0 )Dans les paramètres de couleur des barres, activez la mise en forme conditionnelle → "Par mesure" → sélectionnez CF. Règle : si CF = 1, couleur navy. Sinon, couleur par défaut (bleu-vert clair).
04 Les deux lignes horizontales
CALCULATE + REMOVEFILTERS — le cœur DAX
Chaque ligne part de la barre sélectionnée et s'étend jusqu'à la colonne vide créée à l'étape 2. Pour ça, deux mesures — une pour l'année min, une pour l'année max — avec la même logique :
On supprime le filtre de l'axe X avec REMOVEFILTERS
On le remplace par un filtre sur l'année sélectionnée dans le slicer
On ne retourne une valeur que si la position sur l'axe est à partir de cette année — ce qui étire la ligne vers la droite
Min Year Line = IF( SELECTEDVALUE( dimDate[YearLYblank] ) = "" || SELECTEDVALUE( dimDate[YearLYblank] ) >= MIN( 'dimDate Slicer'[Year] ) & "", CALCULATE( [Sales - Actual], REMOVEFILTERS( dimDate[YearLYblank] ), dimDate[Year] = MIN( 'dimDate Slicer'[Year] ) ) )Max Year Line = IF( SELECTEDVALUE( dimDate[YearLYblank] ) = "" || SELECTEDVALUE( dimDate[YearLYblank] ) >= MAX( 'dimDate Slicer'[Year] ) & "", CALCULATE( [Sales - Actual], REMOVEFILTERS( dimDate[YearLYblank] ), dimDate[Year] = MAX( 'dimDate Slicer'[Year] ) ) )Pour les intégrer, changez le type de visuel en Graphique en courbes et histogramme groupé. Placez Min Year Line et Max Year Line sur l'axe Y des courbes. Désactivez la légende et les étiquettes sur ces deux séries. Rendez les lignes fines, couleur neutre.
05 La ligne verticale via les barres d'erreur
Le contournement le plus élégant de Power BI
Power BI ne sait pas tracer de ligne verticale dans un graphique en courbes. L'astuce : détourner les barres d'erreur. Elles permettent de dessiner une barre verticale à un point précis ici, dans la colonne vide à droite.
Deux mesures à créer, une pour la variance positive, une pour la négative. Chacune ne s'active que dans la zone vide (l'année fictive) :
ErrorBarPos = IF( SELECTEDVALUE( dimDate[YearLYblank] ) = "" && [Variance Value Pct] >= 0, [Max Year Line] ) ErrorBarNeg = IF( SELECTEDVALUE( dimDate[YearLYblank] ) = "" && [Variance Value Pct] < 0, [Max Year Line] )Ajoutez ErrorBarPos sur l'axe Y des courbes, puis dans Format → Barres d'erreur :
Activez les barres d'erreur, type "Par champ"
Borne inférieure : Min Year Line
Activez la barre (Bar), choisissez votre couleur — vert pour une variance positive, rouge pour négative
Bordure à 0 px pour affiner la ligne
Activez les marqueurs et ajustez leur taille
Répétez exactement la même configuration pour ErrorBarNeg
Besoin de dashboards sur-mesure ?
Nous créons vos tableaux de bord interactifs et automatisés.
06 Le badge de variance
Étiquette multi-ligne sur les barres d'erreur
Dernière pièce : afficher l'écart absolu et le pourcentage directement sur la ligne verticale. Ça se configure dans Format → Étiquettes de données, sur la série ErrorBarPos.
Mise en page → Multi-ligne (non activé par défaut, à sélectionner explicitement)
Valeur (Title) : votre mesure d'écart absolu — police plus grande, gras
Détail : votre mesure de pourcentage — police légèrement plus petite
Arrière-plan : couleur assortie à la variance, transparence à 90 % pour ne pas surcharger
Même configuration sur ErrorBarNeg
À retenir
Ce visuel demande du temps à construire et c'est précisément ce qui le rend percutant. Pas de visuel custom, pas de plugin. Que des mécanismes natifs Power BI, bien combinés. Le résultat parle de lui-même au moment où l'utilisateur bouge le slicer pour la première fois.
Récapitulatif - Les 6 étapes en un tableau
Étape | Objectif | Mécanisme DAX / Power BI | Difficulté |
|---|---|---|---|
01 | Slicer sans filtre | Table déconnectée + interactions | Accessible |
02 | Zone vide à droite | Calendrier étendu + YearLYblank | Intermédiaire |
03 | Barres colorées | Mesure CF + mise en forme cond. | Intermédiaire |
04 | Lignes horizontales | CALCULATE + REMOVEFILTERS + IF | Avancé |
05 | Ligne verticale | Error Bars + ErrorBarPos/Neg | Avancé |
06 | Badge de variance | Étiquettes multi-ligne | Intermédiaire |
Ce type de construction illustre une réalité souvent sous-estimée dans Power BI : les visuels les plus efficaces ne sont pas les plus compliqués à regarder, ils sont les plus réfléchis à construire. Chaque étape ici résout un problème concret d'expérience utilisateur.

Autrice
Caroline Martinez
Fondatrice de Ninjads
Fondatrice de Ninjads, j'accompagne les entreprises dans le pilotage de leur performance data (analytics, reporting, stratégies data-driven) et j'anime des formations professionnelles en marketing digital et data.