RĂ©cemment sur le forum, quelqu’un a posĂ© une question en rĂ©pĂ©tant Ă deux reprises qu’Excel perdait la tĂŞte. Loin de moi l’idĂ©e d’intimider qui que ce soit, mais il est tout de mĂŞme assez rare qu’Excel perde la tĂŞte! Bien sĂ»r, il y a parfois certains bogues dans Excel, comme dans tout programme informatique. La plupart du temps, ces bogues sont documentĂ©s. Donc, Ă moins de bogue majeur, vous ne devriez pas conclure qu’Excel fait des erreurs de calcul. Vous devriez plutĂ´t vous demander qu’est-ce qui explique, dans votre dĂ©marche, le rĂ©sultat fourni par Excel. Dans le cas qui nous concerne ici, on fait rĂ©fĂ©rence Ă l’usage d’une fonction en langage DAX, dans Power Pivot, qui ne retourne pas de total. Nous allons examiner pourquoi et nous allons suggĂ©rer d’utiliser la fonction SUMX pour rĂ©gler la situation.
Données de départ pour illustrer la fonction SUMX
De façon simpliste, on part avec une liste qui indique les prĂ©sences d’Ă©tudiants en AM et en PM (1 indique que l’Ă©tudiant est prĂ©sent et 0 qu’il est absent).
Résultat recherché par notre fonction SUMX
On souhaite présenter dans un tableau croisé dynamique, la liste des étudiants présents toute la journée et le grand total en bas du tableau. Donc, selon les données présentées ci-dessus, on cherche un total de 6 apprenants.
DĂ©marche problĂ©matique utilisĂ©e par l’usager
L’usager mentionne avoir utilisĂ© la fonction DAX suivante:
Cet usager prĂ©cise que [MesureAM] et [MesurePM] sont en effet des mesures. On peut donc penser qu’elles ont Ă©tĂ© calculĂ©es par le biais d’une somme de la colonne AM et une somme de la colonne PM (cette portion n’est pas dĂ©finie par l’usager).
Vous avez des sources de données volumineuses à rassembler et analyser dans Excel ? Apprenez à automatiser tout le processus d’importation, de transformation et de modélisation  des données avec nos formations sur Power Query et Power Pivot dans Excel. |
---|
Démarche suggérée par le CFO masqué avec la fonction SUMX
Nous avons plutĂ´t proposĂ© Ă l’usager d’utiliser la formule suivante:
Comparaison des résultats
On peut très bien constater, dans le tableau croisĂ© dynamique ci-dessous, que notre solution montre un total de 6 Ă©tudiants alors que la solution de l’usager ne montre aucun total. Mais est-ce vraiment Excel qui perd la tĂŞte?
Explications des fonctions DAX utilisées
Dans la solution proposĂ©e par l’usager, on fait la somme des 1 dans la colonne AM pour dĂ©terminer le nombre d’individus prĂ©sents en AM et la somme des 1 de la colonne PM pour dĂ©terminer le nombre d’individus prĂ©sents en PM. Ensuite, on imbrique ces 2 mesures dans une fonction IF. Le problème est le suivant. Pour chaque ligne qui prĂ©sente l’information d’un Ă©tudiant, la mesure va fonctionner, puisqu’on dit, si la somme des 1 en AM pour cet individu est Ă©gal Ă 1 et si la somme des 1 en PM pour cet individu est Ă©gal Ă 1, renvoie 1, sinon, ne renvoie rien (voir image ci-dessous). Le problème survient après. D’abord, il faut bien comprendre que dans un tableau croisĂ© dynamique, la ligne de total rĂ©pond aussi au contexte d’Ă©valuation, plus prĂ©cisĂ©ment au contexte de filtres. Ce faisant, Excel se pose la mĂŞme question, est-ce que la somme des 1 en AM, i.e. 9 et Ă©gal Ă la somme des 1 en PM, i.e. 10. La rĂ©ponse est non et donc Excel ne renvoie aucun rĂ©sultat… Ă€ noter que si nous avions ajoutĂ© un troisième paramètre dans la fonction IF, pour indiquer Ă Excel de retourner une valeur quelconque lorsque la condition n’est pas satisfaite, cette valeur serait apparue dans la ligne de total du tableau croisĂ© dynamique.
Encore une fois, nous sommes dans une situation oĂą l’usager ne maĂ®trise pas bien les contextes d’Ă©valuation. Il s’agit de la notion la plus importante rattachĂ©e au langage DAX. Sans maĂ®triser les contextes d’Ă©valuation, les usagers du langage DAX, se buteront toujours sur ce type de problĂ©matiques. Vous n’avez qu’Ă visiter notre forum pour vous en convaincre. Voici d’ailleurs une liste d’articles similaires, qui rĂ©pondent Ă des questions semblables posĂ©es sur le forum:
- Modèle de données : Problématique et résolution pas à pas
- Power BI : Valeurs cumulatives et contextes d’évaluation
- Power BI: Filtres avancés et encore ce fameux contexte d’évaluation!
Dans la solution que nous proposons, nous utilisons une fonction itĂ©rative SUMX. Dans cette fonction, Excel Ă©value ligne par ligne si le rĂ©sultat doit ĂŞtre 1 ou rien. Imaginez ici qu’Excel crĂ©erait une colonne temporaire (invisible) et inscrirait un Ă un les rĂ©sultat dans cette colonne.
Et une fois qu’Excel a crĂ©Ă© cette colonne temporaire invisible, il en fait la somme. Dans ce cas-ci, on obtient donc 6.
Conclusion
Quand vient le temps d’apprendre le langage DAX, il faut prendre le temps de bien comprendre et Ă©tudier les contextes d’Ă©valuation.
Fichier d’accompagnement VIP Ă tĂ©lĂ©charger
Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.
Formation complémentaire
Nous traitons du langage DAX et des contextes d’Ă©valuation en profondeur dans notre formation Introduction au langage DAX (Power BI et Power Pivot).