Exploiter les Fonctions de Time Intelligence en DAX

@joekakone

Joseph Konka @joekakone

03/03/2026 · 9 min

Maîtrisez l'analyse temporelle sous Power BI : calculez des cumuls YTD/QTD/MTD, comparez vos performances à l'année précédente (N-1 et YoY%) avec SAMEPERIODLASTYEAR et DATEADD, et bâtissez des moyennes mobiles glissantes.

En analyse d'entreprise, une métrique isolée ne raconte qu'une infime partie de l'histoire. Savoir qu'un magasin a généré 450 000 € en octobre est une bonne information ; savoir que cela représente une hausse de 18 % par rapport à octobre de l'année précédente et que le cumul annuel (YTD) dépasse les objectifs de 5 % transforme une simple donnée en information stratégique.

Power BI dispose d'une famille de fonctions spécialisées conçues pour naviguer dans le temps : la Time Intelligence.


🛑 Les 3 Prérequis Indispensables#

Avant d'écrire la moindre formule temporelle, vérifiez que votre modèle remplit ces conditions :

  1. Une table de dates dédiée (ex: Dim_Calendrier) sans aucun trou de date entre le 1er janvier et le 31 décembre.
  2. La table est officiellement marquée comme Table de dates (Mark as Date Table).
  3. Une mesure explicite de base est déjà créée (ex: [Montant Ventes] = SUM(Fact_Ventes[SalesAmount])).

1. Calculer des Cumuls Périodiques : MTD, QTD et YTD#

Les fonctions de cumul permettent d'additionner les valeurs depuis le début de la période jusqu'à la date maximale visible dans le contexte :

Année 2025 :
Janvier : 100 k€ ──► YTD = 100 k€
Février : 120 k€ ──► YTD = 220 k€ (100 + 120)
Mars    : 150 k€ ──► YTD = 370 k€ (220 + 150)

A. Le Cumul Annuel à Date (Year-to-Date - YTD)#

Chiffre d'affaires cumulé depuis le 1er janvier de l'année
Ventes YTD = 
TOTALYTD(
    [Montant Ventes],
    Dim_Calendrier[Date]
)

[!TIP] Année Fiscale Décalée :
Si votre entreprise clôture ses comptes au 30 juin (et non au 31 décembre), ajoutez le paramètre de fin d'exercice :

Ventes Fiscal YTD = TOTALYTD([Montant Ventes], Dim_Calendrier[Date], "06/30")

B. Le Cumul Mensuel (Month-to-Date - MTD) et Trimestriel (Quarter-to-Date - QTD)#

Cumul du mois en cours
Ventes MTD = TOTALMTD([Montant Ventes], Dim_Calendrier[Date])
Cumul du trimestre en cours
Ventes QTD = TOTALQTD([Montant Ventes], Dim_Calendrier[Date])

2. Comparaisons Périodiques N-1 : Le Graal du Contrôle de Gestion#

Pour mesurer la croissance réelle d'une entreprise, on compare toujours une période à son équivalent exact de l'année précédente :

A. Les Ventes de l'Année Précédente avec SAMEPERIODLASTYEAR()#

Ventes de la même période l'année dernière (N-1)
Ventes N-1 = 
CALCULATE(
    [Montant Ventes],
    SAMEPERIODLASTYEAR(Dim_Calendrier[Date])
)

B. Décalage Personnalisé avec DATEADD()#

SAMEPERIODLASTYEAR est un raccourci pour reculer d'un an. Si vous souhaitez reculer d'un mois (M-1) ou de deux trimestres, utilisez la fonction plus flexible DATEADD() :

Ventes du mois précédent (M-1)
Ventes M-1 = 
CALCULATE(
    [Montant Ventes],
    DATEADD(Dim_Calendrier[Date], -1, MONTH)
)

3. Calculer la Croissance Year-over-Year (YoY)#

Une fois [Montant Ventes] et [Ventes N-1] calculés, nous pouvons en déduire la croissance :

A. Écart en Valeur Absolue (Δ en €)#

Croissance des ventes en valeur
Croissance Ventes YoY Valeur = 
[Montant Ventes] - [Ventes N-1]

B. Écart en Pourcentage (Δ en %)#

Croissance des ventes en pourcentage
Croissance Ventes YoY % = 
DIVIDE(
    [Croissance Ventes YoY Valeur],
    [Ventes N-1]
)

Passez le format de cette mesure en Pourcentage (%) avec 1 décimale dans les outils de mesure.


4. Périodes Glissantes et Moyennes Mobiles (Rolling Periods)#

Pour effacer les variations saisonnières brutales (comme les pics des fêtes de fin d'année) et observer la tendance de fond, on calcule souvent une moyenne mobile sur 12 mois glissants (Rolling 12 Months).

Utilisez pour cela DATESINPERIOD() :

Chiffre d'affaires cumulé sur les 12 derniers mois glissants
Ventes 12 Mois Glissants = 
CALCULATE(
    [Montant Ventes],
    DATESINPERIOD(
        Dim_Calendrier[Date],
        MAX(Dim_Calendrier[Date]),
        -12,
        MONTH
    )
)
Moyenne mensuelle sur 12 mois glissants
Moyenne Ventes 12 Mois Glissants = 
DIVIDE(
    [Ventes 12 Mois Glissants],
    12
)

⚠️ Le Piège des Dates Futures sans Données#

Si votre calendrier s'étend jusqu'au 31 décembre 2026 mais que les données réelles s'arrêtent au mois de mars, vos calculs temporels risquent d'afficher des zéros ou de prolonger des lignes vides disgracieuses sur vos graphiques.

La parade professionnelle avec LASTNONBLANK ou condition de garde :#

Mesure sécurisée masquant les dates sans données réelles
Ventes N-1 Sécurisées = 
VAR DerniereDateVentes = CALCULATE(MAX(Fact_Ventes[OrderDate]), ALL(Fact_Ventes))
VAR DateCourante = MIN(Dim_Calendrier[Date])

RETURN
IF(
    DateCourante <= DerniereDateVentes,
    [Ventes N-1],
    BLANK()
)

Vous maîtrisez désormais les équations temporelles les plus demandées en entreprise ! Mais si vous avez 10 mesures (Ventes, Coûts, Marges, Quantités, Retours) et devez calculer pour chacune le YTD, le N-1 et le YoY%, vous risquez de vous retrouver avec 40 mesures répétitives... Rendez-vous dans la prochaine leçon pour découvrir l'arme ultime de factorisation : les Groupes de Calcul !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue