regrouper puis étendre en colonnes

Accueil – Le CFO masqué Forums Power Query regrouper puis étendre en colonnes

  • Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par Christian, le il y a 6 mois et 2 semaines.
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #89036
    Christian
    Participant

    Bonjour,

    Je m’arrache les cheveux sur PowerQuery pour quelque chose qui a l’air tout simple.

    J’ai une liste d’adresses emails de différentes entreprises.
    Je voudrais toutes les regrouper en ayant une seule ligne par entreprise, et une adresse email par colonne.

    J’ai regroupé, pivoté, dépivoté dans tous les sens, impossible d’obtenir le résultat voulu.

    Please help 🙂

    Merci beaucoup !

    Attachments:
    You must be logged in to view attached files.
    #89039
    Kim Leblanc
    Participant

    Bonjour,

    Il faut utiliser pivoté, mais avant il faut être en mesure d’ajouter une colonne avec une numérotation de courriel (ex le premier client a 3 courriels donc 3 lignes avec les numérotations 1 à 3) qui servira par la suite pour les en-têtes de colonne.

    Un peu difficile à expliquer en mot alors voici un exemple dans le fichier ci-joint.

    Kim

    • Cette réponse a été modifiée le il y a 6 mois et 3 semaines par Kim Leblanc.
    Attachments:
    You must be logged in to view attached files.
    #89045
    Christian
    Participant

    Merci beaucoup !

    Cela fonctionne très bien !

    Bon weekend,

    Christian

    #89053
    Stéphane Lorin
    Participant

    Bonjour
    Votre phrase “J’ai regroupé, pivoté, dépivoté dans tous les sens, impossible d’obtenir le résultat voulu.” m’amène à la réflexion suivante : la fenêtre d’aide pour la création de regroupement dans PowerQuery est très limitée par rapport aux possibilités immenses de la fonction Table.Group

    Dans votre cas, comme votre colonne “email” est du texte vous ne pouvez que “compter les lignes” ou récupérer “toutes les données”. Faire la somme, la moyenne, le max ou le min n’est pas intéressant.
    Si vous choisissez “Faire la somme” de votre colonne “Email”, each List.Sum([email]) vous renverra une erreur. Normal puisque qu’il n’est pas possible de faire la somme de texte.
    Alors que de nombreuses fonctions “List” ou “Text” sont possibles.
    Par exemple vous pouvez concaténer toutes vos adresses en utilisant Text.Combine
    each Text.Combine([email],”;”) vous retourne “email1;email2;email3”
    et ainsi il ne vous reste plus qu’à fractionner la colonne suivant le “;” pour obtenir le résultat attendu en 2 étapes seulement (un Table.Group puis un Table.SplitColumn)

    Autre exemple pour simplifier la solution proposée par Kim
    Lorsque vous indiquez dans l’agrégation “Toutes les données” each _, type table vous obtenez une table.
    Ce “_” indique votre table initiale filtrée avec les lignes correspondant à votre regroupement
    il suffit d’ajouter un Table.AddIndexColumn devant pour récupérer directement le n° de la ligne
    each Table.AddIndexColumn(_,”Index”), type table. il ne reste plus qu’à développer les colonnes et à pivoter la colonne “Index”.

    Cette fonction Table.Group possède également 2 arguments optionnels : GroupKind (Local ou Global) et Comparer (n’importe quelle fonction pour spécifier les regroupements). Ces arguments ne sont pas disponibles directement et nécessitent d’entrer dans le code M. Mais les possibilités de regroupement sont décuplés.

    Cordialement
    Stéphane

    #89091
    Kim Leblanc
    Participant

    Bonjour,

    Merci Stéphane pour ce complément.

    J’ai appliqué les 2 options mentionnées dans votre message dans mon fichier et effectivement, c’est peut-être plus simple/rapide de cette façon si on est à l’aise de travailler directement avec le code M.

    Ci-joint mon fichier avec 2 nouvelles requêtes (option1_SL et option2_SL) pour illustrer le tout.

    Bonne journée!

    Kim

    Attachments:
    You must be logged in to view attached files.
    #89094
    Christian
    Participant

    Merci à tous les deux !

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.