samedi 14 juillet 2018

Power Query : Ligne décalées cas 02 – Produits, Quantités et Prix de ventes (méthode 01)


Bonjour ! Et bienvenu de ce nouvel épisode des tutoriels Power Query

Lors d'un précédent billet intitulé  "Power Query ; Lignes décalées cas 01 – Produits et Quantité", j'ai présenté une démonstration qui avait pour objectif de passer d'un tableau d'une colonne contenant en alternance des produits puis leurs quantités vers un tableau de deux colonnes avec les produits dans la première et leurs quantité respectives dans la seconde.

Aujourd'hui je vous propose de découvrir comment faire si le tableau contient non pas uniquement le produit suivi de sa quantité mais le produit suivi de sa quantité puis de son prix de vente.

Donc on va passer d'un tableau d'une colonne qui contient en alternance le nom du produit sa quantité puis son prix de vente vers un tableau de trois colonnes avec le nom du produit dans la première, sa quantité dans la seconde et son prix de vente dans la troisième.

Objectif

L'objectif de cette transformation est de passer d'un tableau d'une colonne contenant en alternance des produits puis leurs quantités puis leurs prix de ventes vers un tableau de trois colonnes tel que la première colonne contiendra la liste des produits alors que la seconde contiendra leurs quantités et la troisième leurs prix de ventes.


À la fin de cette démonstration vous aurez découvert les fonctionnalités Power Query suivantes
  • Créer une colonne d'index
  • Créer une colonne modulo
  • Créer une requête par référence à une autre
  • Créer une requête par fusion de requêtes
  • Renommer une requête
  • Renommer une colonne
  • Enlever (supprimer) des lignes par filtrage
  • Supprimer des colonnes
  • Développer des colonnes

Procédure


Afin de réaliser cette transformation, nous allons passer par les étapes suivantes
  • Etape 1, Importation des données dans Power Query
  • Etape 2, Création de quatre colonnes
    • Une première colonne d'index intitulé "Index P" qui affichera un numéro séquentiel pour chaque ligne et qui débutera à partir de 2
    • Une seconde colonne d'index intitulé "Index Q" qui affichera un numéro séquentiel pour chaque ligne et qui débutera à partir de 1
    • Une troisième colonne d'index intitulé "Index V" qui affichera un numéro séquentiel pour chaque ligne et qui débutera à partir de 0
    • Une dernière colonne intitulé "modulo" qui affichera le reste de la division entière par 3 car nous avons 3 données par produit.
  • Etape 3, Création de trois requêtes intermédiaires
    • La première "Produits" permettra de retrouver les produits
    • La seconde "Quantités" permettra de retrouver les quantités
    • Et la troisième "Prix de ventes" permettra de retrouver les prix de ventes
    • Cela sera réalisé en exploitant les données de la colonne "Modulo" qui permettra de définir si la donnée représente le nom du produit (valeur = 0), la quantité (valeur = 1), ou le prix de vente (valeur =2).
  • Etape 4, Création de la requête "Produits et Quantités"
    • Cette première requête permettra de fusionner les produits et les quantités en faisant une jointure entre les requêtes "Produits" et "Quantités". Pour cela, on utilisera les deux colonnes "Index P" et "Index Q" afin mettre en relation les deux requêtes.
  • Etape 5, Création de la requête "Finale"
    • Cette dernière requête permettra de fusionner les produits, quantités et prix de ventes en faisant une jointure entre les requêtes " Produits et Quantités " et "Prix de ventes". Pour cela, on utilisera les deux colonnes "Index P" et "Index V" afin mettre en relation les deux requêtes.
  • Etape 6, Nettoyage de la requête finale
  • Etape 7, Chargement des données dans Excel.

La démonstration en vidéo


Bien sûr il existe au moins deux autres manières de faire et je reviendrais dessus dans les jours à venir.
N'hésitez pas à laisser vos commentaires.

Pour information :

La démonstration a été réalisé avec la version 1806 d'Excel (Abonnement Office 365).
Il est tout a fait possible de transposer ces étapes sous Power BI

2 commentaires: