ES
ERVIS SEFERI
Finance · Business · Technologie
← Retour · Je partage mes connaissances
IA & Automatisation · Power BI

Le poids de chaque poste, et pourquoi un total ne suffit pas

ALL et ALLSELECTED pour répartir un total entre ses postes, puis DIVIDE pour comparer un budget à un réel sans jamais faire planter un rapport quand un compte n'a ni l'un ni l'autre.

Dans le cadre de la rubrique « Je partage mes connaissances », je continue sur le modèle DAX construit dans l'article précédent, avec les questions que pose un contrôleur de gestion une fois les trois agrégats en place : où part l'argent, et le budget a-t-il été tenu ?

Deux mesures suffisent en apparence à y répondre. Le piège est qu'un total juste peut cacher un détail faux, et qu'un dénominateur vide peut faire planter un rapport entier devant un comité de direction.

Télécharger grand_livre_2026_propre.csv Télécharger plan_comptable_2026.csv Télécharger budget_2026.csv

Le poids de chaque poste dans le total des charges

Énoncé

Le contrôleur veut savoir où part l'argent. Il demande un tableau des comptes de charge, du plus lourd au plus léger, avec le montant et le pourcentage que chaque compte représente dans le total des charges. Le pourcentage doit se recalculer sur le total affiché, et la colonne doit totaliser 100 %.

Solution

  1. Table des comptes de charge : PlanComptable[Compte], PlanComptable[Libelle], la mesure Total Charges, filtrée sur PlanComptable[Nature] = Charge.
  2. Ajouter la mesure du poids :
Poids Charge % =
DIVIDE(
  [Total Charges],
  CALCULATE([Total Charges], ALL(PlanComptable)),
  0
)
  1. Trier sur Total Charges, décroissant. Activer le Total général dans la mise en forme du visuel.

Résultat attendu

CompteLibelléTotal ChargesPoids Charge %
641000Rémunérations du personnel45 000,0068,61 %
645000Charges de sécurité sociale9 600,0014,64 %
601000Achats de matières premières3 200,504,88 %
613000Locations3 200,004,88 %
681000Dotations aux amortissements2 100,003,20 %
606100Fournitures non stockables1 450,002,21 %
661000Charges d'intérêts850,001,30 %
627000Services bancaires et assimilés185,000,28 %
Total65 585,50100,00 %

Huit lignes, pas neuf. Le plan comptable porte un neuvième compte de charge, 621000 Personnel extérieur, qu'aucune écriture ne mouvemente sur ce périmètre : Total Charges y renvoie une valeur vide, et Power BI masque la ligne. Une analyse fondée sur le seul réel ne voit jamais ce qui n'a pas été dépensé — ce compte revient au tableau suivant, où le budget, lui, n'est pas vide.

ALL retire aussi le filtre posé sur Nature à l'étape 1 : le dénominateur redevient l'ensemble du plan comptable, mais la mesure Total Charges réapplique elle-même Classe = 6 par son propre CALCULATE. C'est une double protection délibérée : une mesure financière doit porter sa définition en elle-même. Avec ALL, le dénominateur ignore aussi un segment posé par l'utilisateur ; avec ALLSELECTED, il respecte la sélection et la colonne totalise toujours 100 %. Pour un poids de poste dans un rapport interactif, ALLSELECTED est presque toujours le bon choix — ALL sert quand la référence doit rester le total annuel figé.

Variance budget contre réel, et pourquoi DIVIDE est obligatoire

Énoncé

Le contrôleur remet le budget de charges de janvier à avril 2026. Il demande un tableau par compte : réel, budget, écart en euros, écart en pourcentage, avec un total. Une consigne accompagne la demande : le tableau ne doit afficher aucune erreur, même sur un compte sans budget.

Solution

  1. Importer budget_2026.csv avec les trois réglages habituels (UTF-8, virgule, pas de détection automatique), typer MontantBudget en Nombre décimal avec les paramètres régionaux français.
  2. Relier Budget[Compte] à PlanComptable[Compte], cardinalité Plusieurs à un, filtre croisé Unique. Le plan comptable filtre maintenant deux tables de faits : un schéma en étoile.
  3. Ajouter les mesures :
Réel Charges = [Total Charges]
Budget Charges = SUM(Budget[MontantBudget])
Variance Charges = [Réel Charges] - [Budget Charges]
Variance Charges % = DIVIDE([Variance Charges], [Budget Charges], 0)
  1. Mettre en évidence les dépassements : sélectionner le champ Variance Charges dans le visuel, Mise en forme conditionnelle → Couleur de police, une règle « supérieure à 0 » en rouge, une règle « inférieure à 0 » en vert.
Boite de mise en forme conditionnelle avec les regles rouge et vert encadrees
Le rouge signale un dépassement, le vert un budget non consommé. Aucune des deux couleurs ne dit si c'est grave.

Résultat attendu

CompteLibelléRéelBudgetÉcartÉcart %
601000Achats de matières premières3 200,503 000,00200,506,68 %
606100Fournitures non stockables1 450,00800,00650,0081,25 %
613000Locations3 200,003 000,00200,006,67 %
621000Personnel extérieur1 200,00−1 200,00−100,00 %
627000Services bancaires et assimilés185,00185,000,00 %
641000Rémunérations du personnel45 000,0045 000,000,000,00 %
645000Charges de sécurité sociale9 600,009 600,000,000,00 %
661000Charges d'intérêts850,00900,00−50,00−5,56 %
681000Dotations aux amortissements2 100,002 100,000,000,00 %
Total65 585,5065 600,00−14,50−0,02 %
Le total global masque trois situations tres differentes dans le detail par compte
−0,02 % au global. Trois histoires différentes se cachent dans le détail : un dépassement réel, un budget non consommé, une dépense hors budget.

Le total est le chiffre le moins intéressant du tableau. L'écart global vaut −14,50, soit −0,02 % : à ce niveau de lecture, le budget de charges est tenu au centime près. Le détail dit autre chose, et ce sont trois constats de nature différente.

  • Un dépassement réel mais petit en valeur absolue. Le compte 606100 dépasse de 650,00, soit +81,25 %. En euros, c'est négligeable devant la masse salariale ; en pourcentage, c'est le seul poste hors de contrôle du périmètre. Un rapport qui ne montre que les euros ne le voit jamais, un rapport qui ne montre que les pourcentages en fait un incident majeur.
  • Un budget entièrement non consommé. Le compte 621000 affiche −1 200,00 et −100,00 %. La mesure ne tranche pas entre une prestation qui n'a pas eu lieu et une prestation non encore comptabilisée ; elle pose la question au bon endroit.
  • Une dépense hors budget. Le compte 627000 porte 185,00 de réel et aucun budget. Le dénominateur est vide, donc nul. Écrite avec une simple barre oblique, la mesure renverrait une erreur qui contaminerait visuellement tout le tableau. Écrite avec DIVIDE(…, …, 0), elle renvoie 0,00 %.
Le 0,00 % de la ligne 627000 est un faux zéro : il signifie « non calculable », pas « pas d'écart ». La colonne en euros, elle, affiche bien 185,00. On ne commente jamais une variance sur la seule colonne de pourcentage.

Suite de la série : une table de dates dédiée, marquée comme telle, pour suivre l'exercice mois par mois avec TOTALYTD — et pourquoi aucun cumul ne fonctionne sans elle. Lire Le calendrier qui manque à tout cumul.

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 (CALCULATE, SUM, DIVIDE, ALL) sont disponibles dans les versions actuelles ; les noms de menus peuvent changer au fil des mises à jour mensuelles.