Power Query Transformation tableau PowerQuery

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
685
Réponses
2
Affichages
485
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
144
D
  • Question Question
Power Query powerquery
Réponses
4
Affichages
385
Retour