Beruflich Dokumente
Kultur Dokumente
DAX
En effet, dans la gymnastique à l’adaptation constante des tableaux d’aide à la décision, Excel est
devenu l’outil d’analyse incontournable, PowerPivot offre une puissance inégalée dans la mise
au point des indicateurs et le responsable métier peut également utiliser le langage DAX pour
le développement de formules de calculs avancées sans avoir recours au service informatique.
Dans ce livre, après avoir posé les concepts et le vocabulaire, l’auteur propose une description
des fonctions DAX disponibles avec la version 2016 d’Excel et plusieurs index pour retrouver
facilement une fonction, obtenir sa définition et un exemple le plus concret possible.
Le chapitre suivant détaille des cas concrets de mise en pratique à travers des exemples profes-
sionnels provenant de problématiques réelles rencontrées par l’auteur chez ses clients.
Enfin, le dernier chapitre permet de découvrir l’outil open source DAX Studio 2 et des exemples
pour PowerPivot
de programmes VBA qui utilisent des données PowerPivot afin de faciliter la maintenance des
tableaux croisés dynamiques : récupérer la liste des champs calculés de TCD, récupérer la liste
des tables stockées dans PowerPivot, …
et Excel 2016
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
54 €
Thierry DOMELAND
Table des matières 1
Chapitre 1
Principes et définitions
1. Introduction et présentation de l’ouvrage . . . . . . . . . . . . . . . . . . . . . 15
1.1 Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Que trouve-t-on dans cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . 17
1.3 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Qu’est-ce que Power Pivot ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 Qu’est-ce que le langage DAX ?. . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Le langage DAX pour qui ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7 Pour quel besoin ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.8 Démonstration de l’utilité de DAX . . . . . . . . . . . . . . . . . . . . . . 22
2. Installation ou activation de Power Pivot. . . . . . . . . . . . . . . . . . . . . . 24
2.1 Activation de Power Pivot sur Excel 2013. . . . . . . . . . . . . . . . . 24
2.2 Vérification de l'activation Power Pivot . . . . . . . . . . . . . . . . . . 25
3. Présentation de Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 Ruban Power Pivot selon la version d’Excel . . . . . . . . . . . . . . . 26
3.2 Que faut-il savoir sur Power Pivot ? . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Postulats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2 Compatibilité entre les versions . . . . . . . . . . . . . . . . . . 29
3.3 Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Importer les données dans Power Pivot . . . . . . . . . . . . . . . . . . 33
3.4.1 Copier-coller des données depuis Excel . . . . . . . . . . . . . 34
3.4.2 Importer des données
depuis un fichier texte ou CSV . . . . . . . . . . . . . . . . . . . 36
3.4.3 Importer des données depuis une feuille Excel . . . . . . . 39
3.4.4 Importer des données depuis une base de données . . . 40
3.5 Ajouter des colonnes calculées. . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 Langage DAX
pour PowerPivot et Excel 2016
Chapitre 2
Les fonctions DAX
1. Les fonctions principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1 Fonction CALCULATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
1.2 Fonction FILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
1.3 Fonction FILTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2. Les fonctions statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2.1 Fonction COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2.2 Fonction COUNTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2.3 Fonction COUNTAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.4 Fonction COUNTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.5 Fonction COUNTBLANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.6 Fonction COUNTROWS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.7 Fonction DISTINCTCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.8 Complément aux fonctions de comptage . . . . . . . . . . . . . . . . 101
2.8.1 Compter avec des filtres. . . . . . . . . . . . . . . . . . . . . . . . 101
2.8.2 Compter avec plusieurs tables . . . . . . . . . . . . . . . . . . . 102
2.9 Fonctions AVERAGE, AVERAGEA, AVERAGEX . . . . . . . . . 102
2.10 Fonction GEOMEAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.11 Fonction GEOMEANX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4 Langage DAX
pour PowerPivot et Excel 2016
Chapitre 3
DAX par l’exemple
1. Exemples de tableaux de bord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
2. AQUA-SACER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
2.1 Contexte de la société AQUA-SACER . . . . . . . . . . . . . . . . . . 361
2.2 Définition des besoins de AQUA-SACER . . . . . . . . . . . . . . . . 362
2.2.1 Besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
2.2.2 Modèle des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
2.3 Tableau de bord de AQUA-SACER . . . . . . . . . . . . . . . . . . . . . 362
2.3.1 Méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
2.3.2 Réalisation du tableau de bord . . . . . . . . . . . . . . . . . . 363
3. SA-ELEVATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
3.1 Contexte de la société SA-ELEVATOR . . . . . . . . . . . . . . . . . . 377
3.2 Définition des besoins de SA-ELEVATOR . . . . . . . . . . . . . . . 377
3.2.1 Besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
3.2.2 Modèle des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
3.3 Tableau de bord de SA-ELEVATOR . . . . . . . . . . . . . . . . . . . . 380
3.3.1 Bien comprendre le contexte de ligne . . . . . . . . . . . . . 384
3.3.2 Maîtrise des filtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
3.3.3 Maîtrise des moyennes. . . . . . . . . . . . . . . . . . . . . . . . . 388
3.3.4 Travailler avec les dates . . . . . . . . . . . . . . . . . . . . . . . . 390
4. CONTROLETOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
4.1 Contexte de la société CONTROLETOUT . . . . . . . . . . . . . . 394
4.2 Définition des besoins de CONTROLETOUT. . . . . . . . . . . . 394
4.2.1 Besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
4.2.2 Modèle des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
4.3 Tableau de bord de CONTROLETOUT . . . . . . . . . . . . . . . . . 396
4.3.1 Rassembler des données de plusieurs tables . . . . . . . . 396
4.3.2 L'union des TOP N . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
4.3.3 Calcul avec les heures . . . . . . . . . . . . . . . . . . . . . . . . . . 405
12 Langage DAX
pour PowerPivot et Excel 2016
Chapitre 4
VBA, DAX et le logiciel DAX Studio
1. Conception d'un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2. Règles de nommage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
3. Les grandes formules par étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
4. Les modèles en étoile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
5. Suivi des mesures en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
5.1 Le besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
5.2 Résultat attendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
5.3 Le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
5.4 Les classes Excel utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
6. Suivi des codes DAX des tables inversées . . . . . . . . . . . . . . . . . . . . . 416
6.1 Le besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6.2 Le résultat attendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6.3 Le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
6.4 Les classes Excel utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
7. Changer le code DAX des tables inversées . . . . . . . . . . . . . . . . . . . . 420
7.1 Le besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
7.2 Adapter les codes DAX en VBA. . . . . . . . . . . . . . . . . . . . . . . . 421
7.3 Le code VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
7.4 Les classes Excel utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
8. Utiliser DAX Studio 2.2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
8.1 Interface graphique de DAX Studio . . . . . . . . . . . . . . . . . . . . 425
8.2 Liste des mesures de votre projet. . . . . . . . . . . . . . . . . . . . . . . 429
8.3 Exemple de code avec DAX Studio . . . . . . . . . . . . . . . . . . . . . 430
8.4 Définition des mesures avec DAX Studio. . . . . . . . . . . . . . . . 431
8.5 Interprétation des messages d'erreur . . . . . . . . . . . . . . . . . . . . 432
Table des matières 13
Chapitre 5
Compléments
1. Performances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
1.1 Importer une base de données importante . . . . . . . . . . . . . . . 436
1.2 Tableau sur 5 millions d'enregistrements . . . . . . . . . . . . . . . . 437
2. Table de correspondance des fonctions. . . . . . . . . . . . . . . . . . . . . . . 438
2.1 Index des fonctions DAX et Excel triées par fonctions DAX 439
2.2 Index des fonctions DAX triées par fonctions Excel . . . . . . . 447
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Chapitre 4
VBA, DAX et le logiciel DAX Studio
2. Règles de nommage
L’auteur a déjà rencontré deux types de difficulté quant à la gestion des
mesures ou champs calculés. La première concerne le nombre important de
mesures. Par exemple, le projet le plus gros contenait 15 tableaux croisés dy-
namiques, autant de graphiques et environ 50 mesures.
410 Langage DAX
pour PowerPivot et Excel 2016
L’autre type de difficulté rencontrée, c’est d’être deux à travailler sur le même
tableau de bord.
Dans les deux cas, seule une organisation correcte des mesures permet de s’y
retrouver.
Il n’existe pas de règles de nommage universelles. Vous devez trouver celles
qui vous conviennent le mieux afin de vous y retrouver.
Les règles de nommage type informatique, par exemple identifier la table
d’appartenance à l’aide de trois lettres, donner des noms de zones en ne gar-
dant que les consonnes d’un mot, et d’autres règles de ce type ne permettent
pas à l’utilisateur final de comprendre le lien avec son métier.
Il est fortement conseillé de prendre l'habitude de faire précéder les noms des
colonnes par leur table d'appartenance. De toute façon, Power Pivot 2016 vous
oblige de plus en plus à le faire. Dans le cas contraire, vous aurez des erreurs
lors de la rédaction de vos formules.
Avec DAX, il n'existe pas ce genre d'outil et puis beaucoup de fonctions DAX
retournent des listes de valeurs, voire des tables entières. Il est donc parfois
très difficile de comprendre pourquoi la formule d'une mesure ne renvoie pas
le résultat attendu.
Une des manières de faire est de découper le code de sa mesure en petits
morceaux pour en maîtriser le comportement et avancer étape par étape dans
la mise au point des codes complexes.
Par exemple, la fonction de calcul de la réactivité dans la colonne DIFF1 du
dernier exercice de la société CONTROLETOUT ne peut pas être écrit en une
seule fois.
Les avancées de la version 2016, permettent de rendre vos grandes formules
plus claires en utilisant par exemple la déclaration VAR. Surtout, n'hésitez pas
à les utiliser, et à ajouter des commentaires dans vos grandes formules.
Voir aussi les exercices sur l'exemple de la société SA-ELEVATOR.
Le résultat est décrit dans deux tableaux. Le premier liste les mesures du projet
et leurs formules et le second liste les tables et leurs colonnes :
Mieux qu’un long discours, voici le code qui permet de calculer ces deux
tableaux.
Sub DictionnaireMesuresetTables()
n = n + 1
Sheets("Dictionnaire").Cells(n, 1) = "Liste des tables"
Next