Microsoft 365 Regrouper plusieurs colonnes en une seule pour un tableau en liste

Sarah.

XLDnaute Nouveau
Bonjour à tous,

J'essaie depuis plusieurs jours de modifier un fichier.
J'ai un tableau qui a plusieurs colonnes par type de bonus.
Je voudrais avoir une colonne qui reprend tous les types de bonus en ligne en reprenant bien entendu les informations des autres colonnes.
Je pense qu'il est plus simple que je vous mette un exemple factice avec le tableau que j'ai et en dessous celui que je voudrais avoir. Sachant que le tableau réel à plus de 12000 lignes.
Merci beaucoup pour votre aide.
 

Pièces jointes

  • Test.xlsx
    10.2 KB · Affichages: 13
Solution
J'ai mis le tableau source sous forme de tableau structuré puis décroiser avec PowerQuery
Tu peux voir ce qui a été fait en ouvrant PowerQuery :
Données, Obtenir des données, lancer PowerQuery
Tu as les étapes de la requête à droite

Ce fil t'aidera aussi à comprendre http://www.excel-formations.fr/Trucs_astuces/PQ02.php
Merci beaucoup pour ce guide détaillé j'ai pu prendre en main Power Query qui est un outil très interessant

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Sarah. et bienvenue sur XLD :),
Bonjour @chris ;)

Idem mais en un peu plus compliqué avec une macro VBA.
  • Le code est dans module1.
  • Cliquez sur le bouton Hop!
Code dans module1:
VB:
Sub test()
Dim t, i&, j&, n&
   t = Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown))
   ReDim r(1 To 1 + (UBound(t, 2) - 3) * (UBound(t) - 1), 1 To 5)
   r(1, 1) = t(1, 1): r(1, 2) = t(1, 2): r(1, 3) = t(1, 3): r(1, 4) = "Type Bonus": r(1, 5) = "Montant"
   n = 1
   For i = 2 To UBound(t)
      For j = 4 To UBound(t, 2)
         n = n + 1
         r(n, 1) = t(i, 1): r(n, 2) = t(i, 2): r(n, 3) = t(i, 3): r(n, 4) = t(1, j): r(n, 5) = t(i, j)
      Next j
   Next i
   Cells(1, UBound(t, 2) + 2).EntireColumn.Resize(, 5).Delete
   Cells(1, UBound(t, 2) + 2).Resize(n, 5) = r
End Sub
 

Pièces jointes

  • Sarah.- ventiler- v1.xlsm
    17.9 KB · Affichages: 18

Sarah.

XLDnaute Nouveau
Bonjour

Faisable en quelques clics avec PowerQuery intégré à ta version Excel

Le tableau résultat s'actualise par clic droit quand l'original change
Merci beaucoup pour ta solution. Je ne connaissais pas Power Query, c'est une très belle decouverte.
J'ai essayé de reproduire ce que tu as fais mais j'y parviens. Je vois que tu es passé par un TCD. Tu as modifié le tableau en faisant un TCD?
 

Sarah.

XLDnaute Nouveau
Bonjour @Sarah. et bienvenue sur XLD :),
Bonjour @chris ;)

Idem mais en un peu plus compliqué avec une macro VBA.
  • Le code est dans module1.
  • Cliquez sur le bouton Hop!
Code dans module1:
VB:
Sub test()
Dim t, i&, j&, n&
   t = Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown))
   ReDim r(1 To 1 + (UBound(t, 2) - 3) * (UBound(t) - 1), 1 To 5)
   r(1, 1) = t(1, 1): r(1, 2) = t(1, 2): r(1, 3) = t(1, 3): r(1, 4) = "Type Bonus": r(1, 5) = "Montant"
   n = 1
   For i = 2 To UBound(t)
      For j = 4 To UBound(t, 2)
         n = n + 1
         r(n, 1) = t(i, 1): r(n, 2) = t(i, 2): r(n, 3) = t(i, 3): r(n, 4) = t(1, j): r(n, 5) = t(i, j)
      Next j
   Next i
   Cells(1, UBound(t, 2) + 2).EntireColumn.Resize(, 5).Delete
   Cells(1, UBound(t, 2) + 2).Resize(n, 5) = r
End Sub
Merci beaucoup, je vais également essayer ta méthode ;)
 

chris

XLDnaute Barbatruc
Merci beaucoup pour ta solution. Je ne connaissais pas Power Query, c'est une très belle decouverte.
J'ai essayé de reproduire ce que tu as fais mais j'y parviens. Je vois que tu es passé par un TCD. Tu as modifié le tableau en faisant un TCD?
J'ai mis le tableau source sous forme de tableau structuré puis décroiser avec PowerQuery
Tu peux voir ce qui a été fait en ouvrant PowerQuery :
Données, Obtenir des données, lancer PowerQuery
Tu as les étapes de la requête à droite

Ce fil t'aidera aussi à comprendre http://www.excel-formations.fr/Trucs_astuces/PQ02.php
 

Sarah.

XLDnaute Nouveau
J'ai mis le tableau source sous forme de tableau structuré puis décroiser avec PowerQuery
Tu peux voir ce qui a été fait en ouvrant PowerQuery :
Données, Obtenir des données, lancer PowerQuery
Tu as les étapes de la requête à droite

Ce fil t'aidera aussi à comprendre http://www.excel-formations.fr/Trucs_astuces/PQ02.php
Merci beaucoup pour ce guide détaillé j'ai pu prendre en main Power Query qui est un outil très interessant
 

Sarah.

XLDnaute Nouveau
Bonjour @Sarah. et bienvenue sur XLD :),
Bonjour @chris ;)

Idem mais en un peu plus compliqué avec une macro VBA.
  • Le code est dans module1.
  • Cliquez sur le bouton Hop!
Code dans module1:
VB:
Sub test()
Dim t, i&, j&, n&
   t = Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown))
   ReDim r(1 To 1 + (UBound(t, 2) - 3) * (UBound(t) - 1), 1 To 5)
   r(1, 1) = t(1, 1): r(1, 2) = t(1, 2): r(1, 3) = t(1, 3): r(1, 4) = "Type Bonus": r(1, 5) = "Montant"
   n = 1
   For i = 2 To UBound(t)
      For j = 4 To UBound(t, 2)
         n = n + 1
         r(n, 1) = t(i, 1): r(n, 2) = t(i, 2): r(n, 3) = t(i, 3): r(n, 4) = t(1, j): r(n, 5) = t(i, j)
      Next j
   Next i
   Cells(1, UBound(t, 2) + 2).EntireColumn.Resize(, 5).Delete
   Cells(1, UBound(t, 2) + 2).Resize(n, 5) = r
End Sub
Le code est top il marche sans problème, merci beaucoup
 

Discussions similaires