Power Query Dépivoter colonnes dans PowerQuery

Labud

XLDnaute Nouveau
Bonjour
Je bloque sur une requête dans PowerQuery (pour transfert dans PowerBI). C'est peut être tout bête mais je n'y arrive pas alors je vous soumets mon problème.
J'ai une colonne avec des ID unique et plusieurs autres colonnes que j'aurais souhaité mettre en dessous les unes des autres. Le dépivotement des colonnes n'est pas adapté à mon problème, ou alors je n'arrive pas l'utiliser.
J'ai mis en pièce jointe un fichier exemple avec 2 tableaux : le tableau initial selon la structure existante de mes données et le tableau final sur le résultat que je souhaite atteindre.
Mes données sont plus complexes et présentent plus de colonnes mais l'exemple simplifié devrait permettre de m'aider ensuite à transposer sur mes données.
Merci beaucoup pour l'aide.
Bertrand
 

Pièces jointes

  • TEST_PowerQuery.xlsx
    9.1 KB · Affichages: 7

Labud

XLDnaute Nouveau
Bonjour
Merci beaucoup pour vos réponses, c'est très bien elles répondent à mon problème.
J'ai bien compris la solution de merinos.
Merci Amilo pour tes 2 fichiers, je vais m'y pencher plus en détails, j'avoue ne pas connaitre l'étape 3 avec la création des listes.
Merci à tous pour vos contributions !
 

Cousinhub

XLDnaute Barbatruc
Bonjour,
Une alternative :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    UnPivot = Table.UnpivotOtherColumns(Source, {"ID"}, "Attribut", "Valeur"),
    Split = Table.SplitColumn(UnPivot, "Attribut", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Attribut.1", "Attribut.2"}),
    Pivot = Table.Pivot(Split, List.Distinct(Split[Attribut.1]), "Attribut.1", "Valeur"),
    SupprCol = Table.RemoveColumns(Pivot,{"Attribut.2"})
in
    SupprCol
Bonne journée
 

job75

XLDnaute Barbatruc
Bonsoir à tous,

Du classique sans Power Query avec en A10, à tirer vers le bas :
Code:
=SI(MOD(LIGNES(A$10:A10)-1;2);A9;INDEX(A$3:A$5;ENT(LIGNES(A$10:A10)/2)+1))
et en B10, à tirer à droite et vers le bas :
Code:
=SI(MOD(LIGNES(B$10:B10)-1;2);INDEX(D$3:D$5;ENT(LIGNES(B$10:B10)/2));INDEX(B$3:B$5;ENT(LIGNES(B$10:B10)/2)+1))
Bonne nuit.
 

Pièces jointes

  • TEST_PowerQuery.xlsx
    9.6 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 246
Membres
103 163
dernier inscrit
Pelaez