Le rôle qui fausse l'écart au budget
Un rôle de sécurité restreint le réel au périmètre d'un responsable et laisse le budget entier : l'écart affiché devient faux, sans aucune erreur. Démonstration chiffrée, et la règle pour poser un rôle au bon endroit.

Dans le cadre de la rubrique « Je partage mes connaissances », je vous propose de poser une sécurité au niveau des lignes sur un rapport réel contre budget, puis de vérifier ce qu'elle fait vraiment aux chiffres. Le modèle est celui du rapport budgétaire construit dans une série précédente : un grand livre 2025-2026, un plan comptable hiérarchisé, quatre centres de coûts et un budget mensuel 2026. L'outil est Power BI Desktop, onglet Modélisation.
La demande est banale : chaque responsable de centre de coûts ne doit voir que son périmètre. La mise en place prend dix minutes. Le problème apparaît quand on regarde l'écart au budget sous un rôle.
Pourquoi la sécurité devient une question de chiffres
Tant qu'un rapport vit dans un fichier Power BI Desktop, celui qui l'ouvre voit tout. Le jour où il est publié pour plusieurs responsables, il faut restreindre. Power BI le fait avec des rôles : une expression de filtre, évaluée ligne par ligne, appliquée avant tout le reste.
Le réflexe est de vérifier qu'un rôle « marche » en regardant un écran : le responsable du Siège ne voit que le Siège, c'est bon. Ce test ne suffit pas. Un rôle ne change pas seulement ce qu'on voit. Il change ce que les mesures calculent. Et une mesure qui compare deux tables peut se mettre à mentir sans le moindre message d'erreur.
Créer les rôles, au bon endroit
Énoncé
Créer un rôle par centre de coûts - Commercial, Production, Siège, Trésorerie - pour que chaque responsable ne voie que les écritures de son centre.
Solution étape par étape
- Ouvrir le modèle. Onglet Modélisation > Gérer les rôles, puis Créer.
- Nommer le rôle
Responsable Siege, sans accent : le nom sera repris dans le service Power BI, et un accent y est une source d'erreur inutile. - Dans la liste des tables, sélectionner dim centre couts - la dimension, pas le grand livre. Écrire l'expression de filtre
[CentreCouts] = "Siege"et valider par la coche. - Répéter pour les trois autres centres, avec
"Commercial","Production"et"Tresorerie". Enregistrer.
Une expression de rôle n'est pas une mesure. Pas de CALCULATE, pas d'agrégation : c'est un booléen, vrai ou faux pour chaque ligne de la table choisie. Les lignes vraies restent visibles, et le filtre descend vers le grand livre par la relation un-à-plusieurs sur la colonne Journal.
Tester par comparaison, jamais rôle par rôle
Énoncé
Afficher le rapport sous chacun des quatre rôles et relever le résultat net réel 2026, le résultat net budget 2026 et l'écart que le rapport affiche.
Solution étape par étape
- Modélisation > Afficher en tant que, cocher
Responsable Siege, puis OK. Une bannière jaune rappelle en haut du rapport le rôle actif. - Relever les trois valeurs sur une carte ou un tableau : réel, budget, écart.
- Recommencer pour les trois autres rôles. Écrire les quatre relevés dans un même tableau avant de conclure quoi que ce soit.
- Afficher en tant que > Aucun pour revenir à la vue complète.
Résultat attendu
| Rôle actif | Résultat net réel 2026 | Résultat net budget 2026 | Écart affiché |
|---|---|---|---|
| aucun | -41 785,50 | -33 266,47 | -8 519,03 |
| Responsable Commercial | +23 800,00 | -33 266,47 | +57 066,47 |
| Responsable Production | -8 035,50 | -33 266,47 | +25 230,97 |
| Responsable Siege | -57 550,00 | -33 266,47 | -24 283,53 |
| Responsable Tresorerie | vide | -33 266,47 | +33 266,47 |
Le réel se comporte exactement comme prévu. Commercial +23 800,00, Production -8 035,50, Siège -57 550,00 : la somme vaut -41 785,50, le total global. La Trésorerie ne porte aucune écriture de résultat en 2026, son réel est vide. Dans une matrice par centre de coûts, sa ligne n'apparaît même pas tant qu'on n'a pas activé Afficher les éléments sans données sur le champ.
Le budget, lui, ne bouge pas d'un centime. Sous les quatre rôles, il reste à -33 266,47.
Pourquoi le budget ne bouge pas
Le fichier budget_2026.csv n'a pas de colonne Journal. Il est relié au plan comptable et au calendrier, pas aux centres de coûts. Le rôle filtre la dimension des centres ; le filtre descend vers ce qui lui est relié, le grand livre, et s'arrête là.
Pour le responsable du Siège, cela donne un réel de -57 550,00 comparé au budget de toute l'entreprise, et un écart affiché de -24 283,53. Ce chiffre n'a aucun sens. Il n'est ni signalé ni grisé : il a l'air d'un vrai écart. Le responsable Commercial, lui, lit un écart favorable de +57 066,47. Il compare son chiffre d'affaires à un budget qui contient les salaires du Siège.
Un rôle ne rend pas un rapport juste, il le rend partiel. Toute mesure qui compare une table filtrée par le rôle à une table qui ne l'est pas devient fausse sous ce rôle, en silence.
Testé rôle par rôle, le défaut passe inaperçu : chaque écran, pris seul, est plausible. C'est l'alignement des quatre relevés, avec le même budget sur chaque ligne, qui le trahit. Le tableau de comparaison est le livrable du test.
Le rôle posé sur les faits : même chiffre, autre rapport
Énoncé
Un collègue a créé le rôle Production en écrivant son filtre sur le grand livre : [Journal] = "AC". Le résultat net affiché est juste. Il en conclut que le rôle est bon. Montrer qu'il a tort.
Solution étape par étape
- Créer un rôle
Test Production fauxsur la table grand livre, avec le filtre[Journal] = "AC". - Créer un rôle
Test Production justesur la table dim centre couts, avec le filtre[CentreCouts] = "Production". - Sur une page de contrôle, poser une carte Résultat net, une carte avec la mesure
Centres visibles := COUNTROWS ( 'dim centre couts' ), une matrice par centre de coûts et un segment surdim centre couts[CentreCouts]. - Afficher le rapport sous chacun des deux rôles, relever les quatre éléments, puis revenir à Aucun.
Résultat attendu
| Contrôle | Filtre sur le grand livre | Filtre sur la dimension |
|---|---|---|
| Résultat net réel 2026 | -8 035,50 | -8 035,50 |
| Centres visibles | 4 | 1 |
| Matrice par centre de coûts | Production seule renseignée, les autres membres restent sélectionnables | Production seule |
| Segment CentreCouts | Commercial, Production, Siège, Trésorerie | Production |
Les deux rôles donnent le même résultat net et ne sont pas équivalents. Posé sur les faits, le filtre laisse la dimension intacte : le segment propose toujours les quatre centres. Cliquer sur Siège renvoie un rapport vide, qui se lit « pas d'activité au Siège ». C'est faux : c'est « pas le droit de voir ». La structure de l'entreprise fuit par le segment.
Un filtre de rôle se pose sur la dimension. Il descend vers les faits par la relation un-à-plusieurs. Posé sur les faits, il ne remonte pas.
C'est la même mécanique que le sens unique du filtre entre dimension et faits, vue sur le modèle de compte de résultat : un rôle n'est qu'un filtre de plus, évalué avant tous les autres.
Deux points qui se jouent hors du fichier
- La sécurité au niveau des lignes s'applique aux lecteurs. Un utilisateur qui a des droits d'édition sur l'espace de travail - Administrateur, Membre ou Contributeur - voit tout, quel que soit son rôle. Un rôle testé en local peut donc ne rien filtrer une fois publié, si les responsables ont été ajoutés comme membres de l'espace.
- Ce modèle lit quatre fichiers CSV sur un disque local. Une actualisation planifiée du rapport publié demande une passerelle de données, ou le déplacement des fichiers vers un stockage que le service atteint directement.
Ce qu'il reste à régler
Le défaut du budget n'est pas dans la sécurité, il est dans le modèle. Deux corrections existent. Ventiler le budget par centre de coûts : utile, mais le fichier livré ne le permet pas. Ou écrire une mesure d'écart qui refuse de répondre dès que le périmètre est restreint : honnête, et faisable tout de suite. Les deux valent mieux qu'un chiffre faux.
Cette mesure protégée, et le passage de quatre rôles statiques à un seul rôle dynamique, font l'objet de l'article suivant.
La suite : une mesure d'écart qui refuse de répondre sous un rôle, puis un seul rôle dynamique à la place de quatre : L'écart qui refuse de répondre.
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 (COUNTROWS) sont disponibles dans les versions actuelles ; les noms de menus peuvent changer au fil des mises à jour mensuelles.