La normalisation consiste à structurer ses données pour les rendre exploitables par un Tableau Croisé Dynamique.
Si vos données source ne sont pas normalisées, Power Query va le faire pour vous. Vous n’aurez pas besoin de modifier vos sources : Power Query appliquera les transformations que vous aurez déterminées, et ce, à chaque mise à jour de la source.
Structure de base
Voici un exemple de structure de données qui n’est pas (ou difficilement) exploitable directement par un Tableau Dynamique Croisé (TCD) :
Notre TCD donnerait ceci :
Plusieurs problèmes se présentent ici :
Nous avons fait glisser successivement les champs Janvier, Février et Mars dans la zone Valeurs. C’est long, glisser 1 seul champ aurait été plus rapide !
Quand nous aurons les autres mois de l’année, nous devrons ajouter 9 autres champs. C’est long également ! Et on peut se tromper lors de l’ajout.
Calculer le total de l’année va être compliqué. Possible, mais compliqué !
Bonne structure
Voici les mêmes données, mais normalisées (peu importe ici la méthode utilisée pour réaliser cette normalisation) :
Et le TCD réalisé à partir de ces données :
Les avantages sont les suivants :
Nous avons fait glisser le seul champ “Mois’” dans la zone Valeurs, ce qui a créé autant de colonnes que de mois. Pratique !
Quand de nouveaux mois apparaitront dans la source, ils s’afficheront automatiquement à la suite (colonne F...)
Les totaux des mois s’affichent déjà, dans la colonne Total général. Quand de nouveaux mois apparaitrons dans la source, cette colonne sera recalculée automatiquement.
Première leçon à tirer
Une colonne d’une source normalisée contient des données de même nature
Dans notre premier tableau, il y avait 3 colonnes qui contenaient de données de même nature, en l’occurrence les quantités. Dans notre version normalisée, une seule colonne “Qte” contient toutes les quantités.
Finalement, la colonne Mois de notre source normalisée contient aussi des données de même nature.
Ajouter des données en conservant la normalisation
Nous voulons continuer à enrichir notre source de données. Au lieu de créer un autre classeur ou une autre feuille, nous mettons les données de chaque année, nous créons 2 colonnes :
Mauvaise idée ! Nous retrouvons notre problème du début : chaque nouvelle année entrainera la création d’une nouvelle colonne, donc une nouvelle colonne à faire glisser dans la zone Valeurs de notre TCD. Au lieu de cela, nous créons une colonne Année :
Nous avons donc 2 fois plus de lignes, (18 pour 2019 et 18 pour 2020). Mais ce n’est pas un problème. Notre colonne “Année” contient logiquement des... années. Et la colonne “Qte” contient toujours des... quantités.
Nous avons ici fait glisser le champ Année dans la zone Filtre du TCD. Nous filtrons sur l’année 2019 :
Puis sur l’année 2020 :
Trop facile !
Comment normaliser ses données
2 cas se présentent :
Vos données sources sont déjà normalisées. C’est typiquement le cas d’une source de type Base de données, comme SQL Server, Oracle, MySQL, etc.
Vos données sources ne sont pas normalisées. Ce peut être le cas d’un classeur Excel. Vous pouvez soit modifier vos données sources “à la main”, avec des copier/coller. Vous pouvez aussi ne pas toucher au fichier et utiliser Power Query pour réaliser la transformation.
Normaliser avec Power Query
Voici un exemple de fichier à normaliser :
Etapes résumés dans Power Query
Lancer Excel (version 2016 et suivante).
Cliquer sur Données > Obtenir des données (ou Nouvelle requête) > A partir d’un fichier > A partir d’un classeur.
Sélectionner le fichier Excel contenant la plage à transformer, ce qui affiche :
Dans cette fenêtre Navigateur, sélectionner la feuille et cliquer sur Transformer les données (ou Modifier), ce qui affiche :
Cliquer dans la colonne Année puis clic droit > Remplir > Vers le bas :
Sélectionner les colonnes Année et Produit, puis clic droit > Dépivoter les autres colonnes :
Double-cliquer sur l’en-tête Attribut et saisir Mois. Idem pour la colonne Valeur en Qte :
Nous voulons une colonne de type Date, qui regroupera les mois et années, comme 01/01/2019.
Cliquer sur la colonne Mois (clic sur l’en-tête) puis Année (CTRL + Clic), clic droit > Fusionner. Dans la boite qui s’ouvre, cliquer directement sur OK :
Cliquer sur l’en-tête de la colonne “Fusionnée” puis Transformer > Date > Analyser :
Renommer la colonne en DateVente
Les transformations sont terminées ! Renvoyons les données vers Excel : Accueil > Fermer et charger :