Le calendrier qui manque à tout cumul
TOTALYTD ne fonctionne pas sur les dates du grand livre. Il faut un calendrier complet, marqué comme tel, pour que les cumuls mensuels tiennent la route.

Dans le cadre de la rubrique « Je partage mes connaissances », je vous propose de construire le cumul mensuel des charges et du résultat, l'indicateur que tout contrôleur de gestion réclame en réunion budgétaire. Le réflexe naturel est de trier les lignes du grand livre par date et d'additionner au fil de l'eau. Ce réflexe casse dès que le calendrier n'est pas complet, et il ne l'est jamais dans un grand livre, qui ne contient que les jours où une écriture existe.
Pourquoi la colonne de dates du grand livre ne suffit pas
La table GrandLivre contient une colonne Date. Elle semble suffisante pour un cumul : trier, additionner, afficher. Elle ne l'est pas, parce qu'elle ne contient que les dates où une écriture existe, treize dates sur toute la période dans le fichier utilisé ici. Un cumul construit sur cet axe saute les jours sans écriture, et un mois sans mouvement disparaît du visuel au lieu d'afficher un cumul stable.
Aucune fonction de temps DAX, TOTALYTD, DATEADD ou SAMEPERIODLASTYEAR, ne fonctionne correctement sans une table de dates dédiée, continue, et déclarée comme telle.
Construire un calendrier complet
- Ruban Accueil, groupe Calculs, Nouvelle table. La formule ci-dessous construit un jour par ligne du 1er janvier au 31 décembre 2026, avec l'année, le numéro du mois, le libellé du mois et le trimestre en colonnes annexes.
Calendrier =
ADDCOLUMNS(
CALENDAR(DATE(2026, 1, 1), DATE(2026, 12, 31)),
"Année", YEAR([Date]),
"N° mois", MONTH([Date]),
"Mois", FORMAT([Date], "MMMM yyyy"),
"Trimestre", "T" & FORMAT([Date], "Q")
)
- La table créée reste une table comme une autre tant qu'elle n'est pas déclarée table de dates. Dans le volet Données, sélectionner Calendrier, ruban Outils de table, Marquer comme table de dates, choisir la colonne Date, valider. Une coche verte confirme la déclaration.
- Sans cette étape, la colonne Mois se trie alphabétiquement : avril avant février. Sélectionner la colonne Mois, ruban Outils de colonne, Trier par colonne, choisir N° mois.
- Vue Modèle : relier GrandLivre[Date] à Calendrier[Date], puis Budget[Date] à Calendrier[Date]. Cardinalité plusieurs-à-un, direction du filtre croisé sur Unique dans les deux cas.
Les mesures de cumul
Deux mesures suffisent, une fois le calendrier en place et relié aux deux tables de faits :
Charges YTD = TOTALYTD([Total Charges], Calendrier[Date])
Résultat YTD = TOTALYTD([Résultat], Calendrier[Date])
Posées dans une table aux côtés de Calendrier[Mois], Total Charges et Résultat, ces deux mesures donnent :
| Mois | Total Charges | Charges YTD | Résultat | Résultat YTD |
|---|---|---|---|---|
| janvier 2026 | 35 300,50 | 35 300,50 | −22 800,50 | −22 800,50 |
| février 2026 | 23 950,00 | 59 250,50 | −19 550,00 | −42 350,50 |
| mars 2026 | 2 285,00 | 61 535,50 | 4 615,00 | −37 735,50 |
| avril 2026 | 4 050,00 | 65 585,50 | −4 050,00 | −41 785,50 |
| Total | 65 585,50 | 65 585,50 | −41 785,50 | −41 785,50 |
Le calendrier compte douze mois ; le tableau n'en affiche que quatre. Mai à décembre existent dans Calendrier mais n'ont aucune écriture en face : les mesures y sont vides, Power BI masque la ligne. Le calendrier complet reste indispensable malgré tout, parce que TOTALYTD a besoin d'un axe continu pour additionner correctement, un axe troué donnerait un cumul faux plutôt qu'un cumul vide.
Mars est le seul mois bénéficiaire du tableau : résultat de +4 615,00, parce qu'une vente au client GAMMA de 6 900,00 tombe dans un mois sans écriture de paie. Lu seul, ce mois raconte une performance. Lu en cumul, le résultat remonte de −42 350,50 à −37 735,50 puis redescend en avril : c'est le calendrier des paies qui parle, pas la performance commerciale.
Un contrôle tient en une ligne : le cumul du dernier mois renseigné doit être strictement égal au total général. Ici, 65 585,50 apparaît deux fois. Si les deux valeurs divergent, soit la table de dates n'est pas marquée comme telle, soit la relation à Calendrier est absente ou mal orientée.
Les erreurs qui coûtent une soirée
| Erreur | Symptôme | Correction |
|---|---|---|
| Colonne GrandLivre[Date] utilisée comme axe de temps | Les cumuls sautent des mois, ou s'arrêtent au dernier mois mouvementé | Créer une table Calendrier continue, dédiée à l'axe de temps |
| Table de dates créée mais non marquée | TOTALYTD renvoie une valeur vide ou seulement le total du mois | Outils de table → Marquer comme table de dates |
| Colonne Mois non triée par son numéro | L'axe affiche avril avant février | Trier par colonne → N° mois |
Ce que ce fichier ne permet pas de calculer
SAMEPERIODLASTYEAR et DATEADD renverraient ici des colonnes vides : le grand livre démarre le 15 janvier 2026, et aucun exercice 2025 n'existe dans les fichiers. Une comparaison N/N-1 réclame des données N-1 ; les fabriquer pour la démonstration reviendrait à masquer que l'exemple ne peut pas tourner sur ce jeu de données. Une table vide prise pour un bug coûte plus cher qu'une fonction qu'on n'a pas encore l'occasion d'illustrer correctement.
L'article précédent posait ALL, ALLSELECTED et DIVIDE pour lire un poids et une variance sans diviser par zéro. Celui d'avant posait la mesure et la colonne calculée, deux réflexes qui se ressemblent et se traitent différemment selon le contexte de filtre. Le calendrier ferme cette série de trois : relire DAX : la mesure qui remplace la formule Excel pour reprendre au début.
Versions : article rédigé d'après Power BI Desktop, mise à jour d'août 2026 (interface en français). Les fonctions DAX utilisées (TOTALYTD, CALENDAR, ADDCOLUMNS, FORMAT) sont disponibles dans les versions actuelles ; les noms de menus peuvent changer au fil des mises à jour mensuelles.