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 1 année et 1 mois.
-
AuteurArticles
-
2 avril 2021 à 13 h 24 min #89036
Christian
ParticipantBonjour,
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.2 avril 2021 à 14 h 15 min #89039Kim Leblanc
ParticipantBonjour,
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 1 année et 1 mois par
Kim Leblanc.
Attachments:
You must be logged in to view attached files.2 avril 2021 à 16 h 40 min #89045Christian
ParticipantMerci beaucoup !
Cela fonctionne très bien !
Bon weekend,
Christian
4 avril 2021 à 16 h 33 min #89053Stéphane Lorin
ParticipantBonjour
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.GroupDans 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éphane6 avril 2021 à 9 h 24 min #89091Kim Leblanc
ParticipantBonjour,
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.6 avril 2021 à 9 h 33 min #89094Christian
ParticipantMerci à tous les deux !
-
Cette réponse a été modifiée le il y a 1 année et 1 mois par
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.