Regrouper plusieurs colonnes en une seule + colonne en-têtes

Bonjour à tous

j'aimerai trouver une macro qui permet de regrouper plusieurs colonnes en une seule, et qui duplique les en-têtes dans une nouvelle colonne

J'ai joint un petit extrait de mon tableau

Je vous remercie pour votre aide

Olivier

340colonnesen1seule.xlsx (12.07 Ko)

Bonsoir et bienvenue,

Sub Refonte()
Dim Sh$, Lg%, Lg2%, Lg3%, i%, CL%
'Macro par Claude Dubois pour "kikekoi" Excel-Pratique le 17 août 2010
    Application.ScreenUpdating = False
    Sh = ActiveSheet.Name
    Lg = Range("A65536").End(xlUp).Row
    CL = Cells(1, 200).End(xlToLeft).Column
    Sheets.Add Before:=Sheets(1)
    Sheets(Sh).Activate

    With Sheets(1)
            Range("a1:c1").Copy Destination:=.Range("a1") 'en-têtes
        For i = 4 To CL
            Lg2 = .Range("a65536").End(xlUp)(2).Row
            Range("a2:c" & Lg).Copy Destination:=.Range("a" & Lg2)
            Lg3 = .Range("a65536").End(xlUp).Row
            .Range(.Cells(Lg2, 4), .Cells(Lg3, 4)) = Cells(1, i) 'Cat
            Range(Cells(2, i), Cells(Lg, i)).Copy Destination:=.Range("e" & Lg2) 'montant
        Next i
            .Range("d1") = "Catégorie"
            .Range("e1") = "Montant"
            .Activate
    End With
End Sub

Amicalement

Claude

392kikekoi-refonte.zip (16.79 Ko)

Super, je vais gagner beaucoup de temps avec cette macro, je te remercie Maître Dubois

Bonjour,

j'ai besoin d'aide afin de regrouper plusieurs colonnes en une seule, et qui duplique les en-têtes dans une nouvelle colonne

J'ai joint un petit extrait de mon tableau

Je vous remercie pour votre aide

Bonjour

A vérifier

Bonjour Banzai64,

Merci c'est exactement ce que je voulais. Cependant j'ai un tas de données à traiter de la sorte.

pouviez-vous me m'expliquer comment procéder?

Merci bcp pour votre aide si précieuse.

Bonjour

Très simple

Un 1er tableau contenant la colonne 1

Ensuite une boucle de la colonne 2 à la dernière

Et dans cette boucle

  • On copie le 1er tableau dans la colonne 1
  • On récupère les données de la colonne (B,C,D, etc....) dans un 2ème tableau
  • On copie ce 2ème tableau dans la colonne B

C'est tout

J'ai pas compris:

Copier le 1er tableau dans la colonne 1 et on récupère les données de la colonne (B,C,D, etc.) dans un 2ème tableau.

Merci.

Bonjour

Je t'ai juste indiqué le déroulement

Un tableau est un espace mémoire dans lequel on peut stocker des données (par exemple la zone A1:A12)

Des commentaires dans le code

Bonsoir,

J'ai téléchargé le fichier mais je ne sais pas afficher les commentaires.

Si c'est pas trop demander, pouvez-vous utiliser le premier et ajouter des commentaires pour me montrer votre cheminement. Dsl, je suis débutant donc, j'ai un peu de mal avec votre langage pro.

Encore merci.

Bonsoir

Tu as des commentaires dans le code

Pour voir le code

Alt + f11

Dans la fenêtre gauche, tapes sur le + à gauche de Modules

Ensuite double clic sur le mot Module1

Dans la fenêtre de droite tu auras le code de la macro ainsi que les commentaires

C'est énorme merci bcp ca va m'éviter des nuits d'insomnies

Bonjour,

je souhaite regrouper plusieurs colonnes en une seule avec les en-têtes des colonnes dans une autre colonne. il y a déjà des macros mais je n'arrive pas à les faire fonctionner... Je joins une partie de mon fichier avec les résultats attendus en 2ème page.

Quelqu'un pourrait m'aider?

j'ai utiliser cette macro qui a été faite par Mr Dubois mais je ne comprends pas comment elle a été construite du coup elle ne fonctionne pas pour mes données..

    Sub Refonte()
    Dim Sh$, Lg%, Lg2%, Lg3%, i%, CL%
    'Macro par Claude Dubois pour "kikekoi" Excel-Pratique le 17 août 2010
       Application.ScreenUpdating = False
        Sh = ActiveSheet.Name
        Lg = Range("A65536").End(xlUp).Row
        CL = Cells(1, 200).End(xlToLeft).Column
        Sheets.Add Before:=Sheets(1)
        Sheets(Sh).Activate

        With Sheets(1)
                Range("a1:c1").Copy Destination:=.Range("a1") 'en-têtes
           For i = 4 To CL
                Lg2 = .Range("a65536").End(xlUp)(2).Row
                Range("a2:c" & Lg).Copy Destination:=.Range("a" & Lg2)
                Lg3 = .Range("a65536").End(xlUp).Row
                .Range(.Cells(Lg2, 4), .Cells(Lg3, 4)) = Cells(1, i) 'Cat
               Range(Cells(2, i), Cells(Lg, i)).Copy Destination:=.Range("e" & Lg2) 'montant
           Next i
                .Range("d1") = "Catégorie"
                .Range("e1") = "Montant"
                .Activate
        End With
    End Sub
23pourmacro.xlsx (291.58 Ko)
Rechercher des sujets similaires à "regrouper colonnes seule colonne tetes"