Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Power Query Transformation tableau PowerQuery

Labud

XLDnaute Nouveau
Bonjour
J'ai un tableau sous une forme et je souhaite l'exploiter dans PowerQuery mais je n'arrive pas à le transformer dans la forme voulue.
L'idée est de transformer un tableau de départ de 2 colonnes en dépivotant certaines lignes et pas d'autres .Je joins mon fichier exemple qui sera surement plus explicite qu'un texte pas très clair C'est un petit fichier juste pour l'exemple, si on me donne la clé pour ce tableau je pourrai ml'ensortir pour un cas plus grand.
Merci par avance pour l'aide !
Bertrand
 

Pièces jointes

  • Test.xlsx
    28.6 KB · Affichages: 16
Solution
Bonjour à tous !
Une autre approche, à partir d'une source nommée tSource :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    GroupBy = Table.Group(
        Source,
        {"Column1"},
        {{"tbl", each Table.FromValue([Column1]{0},[DefaultColumnName ="Column2"]) &Table.RemoveColumns(Table.Transpose(_),"Column1")}},
        GroupKind.Local,
        (x,y)=> if Text.StartsWith(y[Column1],"Tableau_") then 1 else 0),
    Combine = Table.Combine(GroupBy[tbl])
in
    Combine

chris

XLDnaute Barbatruc
Bonjour

Un tableau structuré doit respecter certaines règles, notamment :
  • pas de ligne vide et donc encore moins des colonnes entières
  • une et une seule ligne de titre avec en dessous des données de même nature
  • pas de lignes de totaux autres que celle prévue dans les tableaux structurés
Tes lignes en marron devraient donc faire l'objet de 2 colonnes (une pour la description, l'autre pour la surface) et non entrecouper le tableau
Les titres en lignes 3 et 4 devrait être dans une même cellule (éventuellement avec un retour à la ligne) et servir d'en-tête au tableau

Sinon il faut utiliser une plage classique et non un tableau structuré.

Il n'y a qu'un tableau structuré nommé Tableau1 dans ton classeur

Tableau2 est ton exemple de source et Tableau3 celui du résultat voulu et le rapport avec Tableau1 n'est pas clair.
 

alexga78

XLDnaute Occasionnel
Bonsoir Labud, le forum

Une proposition certainement perfectible apéro oblige...


PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 1, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each if [Column2] = null then [Index] else null),
    #"Filled Up" = Table.FillUp(#"Added Custom",{"Custom"}),
    #"Added Custom2" = Table.AddColumn(#"Filled Up", "Custom.1", each if [Column2] = null and [Index] = [Custom] then [Custom] +1 else [Custom]),
    #"Grouped Rows" = Table.Combine(List.Transform(Table.Group(#"Added Custom2", {"Custom.1"}, {{"Count", each  Table.Transpose(Table.SelectColumns(_, {"Column1", "Column2"}))
}})[Count], each Table.SelectRows(_, each [Column1] <> null)))
in
    #"Grouped Rows"

Bonne soirée
 

JFL_XLD

XLDnaute Junior
Bonjour à tous !
Une autre approche, à partir d'une source nommée tSource :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    GroupBy = Table.Group(
        Source,
        {"Column1"},
        {{"tbl", each Table.FromValue([Column1]{0},[DefaultColumnName ="Column2"]) &Table.RemoveColumns(Table.Transpose(_),"Column1")}},
        GroupKind.Local,
        (x,y)=> if Text.StartsWith(y[Column1],"Tableau_") then 1 else 0),
    Combine = Table.Combine(GroupBy[tbl])
in
    Combine
 

Discussions similaires

Réponses
7
Affichages
615
Réponses
7
Affichages
482
Réponses
16
Affichages
937
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…