Pivoter et synthetiser les tables requêtees dans power query

26classeur1.xlsx (13.51 Ko)

bonjour à toutes et tous

je souhaiterais savoir s'il est possible de pivoter et synthetiser les tables requêtees directement dans power query comme dans le fichier joint

dans un sens ou l'autre selon ce qui est plus pratique et des possibilités

merci à toutes et tous et bonnes vacances à ceux qui le sont

Bonsoir à tous !

Une proposition ?

Bonjour,

Autre proposition

27classeur2.xlsx (20.17 Ko)

Bonsoir le forum,

Une autre solution :

Option Explicit
Sub Pivoter()
  Dim a, b(), w(), i As Long, n As Long, j As Byte
  Dim dico As Object
  Set dico = CreateObject("Scripting.Dictionary")
  dico.CompareMode = 1
  With Sheets("Feuil2")
     a = .Range("a1").CurrentRegion.Value
     ReDim b(1 To UBound(a, 1), 1 To 1)
     For i = 2 To UBound(a, 1)
        If Not dico.exists(a(i, 1)) Then
           j = j + 1
           If j > UBound(b, 2) Then
              ReDim Preserve b(1 To UBound(b, 1), 1 To j)
           End If
           b(1, j) = a(i, 1)
           dico(a(i, 1)) = VBA.Array(1, j)
        End If
        w = dico(a(i, 1))
        w(0) = w(0) + 1
        b(w(0), w(1)) = a(i, 2)
        n = Application.Max(n, w(0))
        dico(a(i, 1)) = w
     Next
     Application.ScreenUpdating = False
     With .Range("j1").Resize(n, UBound(b, 2))
        .Value = b
        .Font.Name = "calibri"
        .Font.Size = 10
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .BorderAround Weight:=xlThin
        .Borders(xlInsideVertical).Weight = xlThin
        With .Rows(1)
           .Interior.ColorIndex = 42
           .BorderAround Weight:=xlThin
        End With
     End With
  End With
  Set dico = Nothing
  Application.ScreenUpdating = True
End Sub

klin89

bonjour à tous,

merci pour votre aide

j'ai tenté d'adapter une des solutions en copiant collant l'éditeur avancé et en adaptant à mon véritable fichier mais cela ne fonctionne pas.

let

Source = Table.Combine({État_fam_fil_mét_SIC, État_fam_fil_mét_RHL, État_fam_fil_mét_FIN_ACH_AMT, État_fam_fil_mét_EPS, État_fam_fil_mét_MUS, État_fam_fil_mét_OMT, État_fam_fil_mét_COM, État_fam_fil_mét_GRH, État_fam_fil_mét_SAN, État_fam_fil_mét_IFR_MMT_MSV, État_fam_fil_mét_LCC_TIMMB, État_fam_fil_mét_MMT_MOT}),

#"Autres colonnes supprimées" = Table.SelectColumns(Source,{"Famille pro", "Filière pro", "Métier"})

in

#"Autres colonnes supprimées"

let

Source = Excel.CurrentWorkbook(){[Name="Index métiers"]}[Content],

GroupBy = Table.Combine(Table.Group(Source, {"Filière pro"}, {{"tbl", each Table.AddIndexColumn(_,"Idx",0) }})[tbl]),

Combine = Table.Pivot(GroupBy, List.Distinct(GroupBy[Filière pro]), "Filière pro", "Métier"),

ColSupp = Table.RemoveColumns(Combine,{"Idx"})

in

ColSupp

Cela me marque expression.syntaxerror

Bonjour à tous !

Il serait opportun de joindre un classeur représentatif........

Bonjour

Voici un fichier en pièce jointe

15classeur3.xlsx (17.06 Ko)

Bonjour à tous de nouveau !

En retour votre classeur avec la requête adaptée :

bonjour

merci de ton retour .

malheureusement lorsque je l'adapte à mon fichier réel non anonymiser et non épuré, cela ne fonctionne plus.

aurais tu la possibilité de m'expliquer "group by" ?

afin que je puisse comprendre

merci

Bonjour à tous de nouveau !

Pour quelle raison ne fournissez-vous pas , comme demandé, un fichier représentatif ?

C'est exaspérant de perdre ainsi du temps au motif que vous ne communiquez pas les bons éléments.

GroupBy = Table.Combine(Table.Group(Source, {"Filière pro"}, {{"tbl", each Table.AddIndexColumn(_,"Idx",0) }})[tbl])

Cette ligne de code, sans grande complexité, opère un regroupement sur le champ "Filière pro" avec comme agrégat une table contenant un index.
Le regroupement opéré, on combine les différents tables (champ "tbl") pour en afficher le détail et permettre un pivot (étape suivante).

Bonjour

Je vous remercie infiniment pour le temps passé à m'aider.

j'avoue que j'aurais dû vous envoyer le fichier original de prime abord mais je voulais essayer de comprendre et surtout anonymiser mon fichier , et je m'en excuse

décidément , j n'arrive toujours pas à adapter le fichier ... Le voici donc en pièce jointe, en espérant, ne pas trop vous avoir pris de votre temps

Bonjour à tous de nouveau !

Version...3 !

Bonjour

Merci infiniment pour votre aide. Cela fonctionne.

J'ai essayé de l'adapter à d'autres requêtes en adaptant les lignes de code dans l'éditeur avancé mais cela ne fonctionne pas .

bleu : nom de la requête

rouge et orange : nom des colonnes

let

Source = Excel.CurrentWorkbook(){[Name="Listes_déroulantes_métiers"]}[Content],

GroupBy = Table.Combine(Table.Group(Source, {"Filière pro"}, {{"tbl", each Table.AddIndexColumn(_,"Idx",0) }})[tbl]),

Pivot = Table.Pivot(GroupBy, List.Distinct(GroupBy[#"Filière pro"]), "Filière pro", "Métier"),

ColSupp = Table.RemoveColumns(Pivot,{"Idx"})

in

ColSupp

Bonjour à tous de nouveau !

Vous ne faîtes qu'un copier/coller de ma requête.......

Qu'attendez-vous ?

Que je devine vos tâtonnements ?

Bonjour à tous,
Une autre proposition Power Query.
Cdlt.

let
    Source = Excel.CurrentWorkbook(){[Name="Listes_déroulantes_métiers"]}[Content],
    Group = Table.Group( Source, {"Filière pro"}, {{"Lists", each _[Métier]}}),
    Pivot = Table.FromColumns( Group[Lists], Group[Filière pro])
in
    Pivot

Bonjour à tous,

La dernière solution proposée est adaptable et fonctionne.

Je vous remercie pour votre aide et surtout votre investissement.

bonne journée

Rechercher des sujets similaires à "pivoter synthetiser tables requetees power query"