Power BI : construire un graphique de comparaison dynamique entre deux années

Caroline MartinezDatavisualisation

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.

comparaison entre 2 années sur Power bi

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.

Découvrir la formation

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.

Découvrir nos prestations

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.

Caroline Martinez

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.

Dans la même catégorie