Copier plusieurs colonnes à la suite

]Bonjour le forum,

Après de longues tentatives de résoudre ça par moi-même, je craque et je fais appel à vos (meilleures) connaissances que moi en VBA.

J'ai un fichier avec plusieurs onglets.

Un onglet avec Data

Plusieurs onglets (le nombre va varier) avec des infos dedans.

Je souhaiterai regrouper dans mon onglet Data une colonne en particulier des différents onglets.

C'est à dire mettre toujours la colonne C de la feuille 2, puis celle de la feuille 3, etc.

Les longueurs seront fixes (environ 150 lignes) à chaque fois.

Je bloque surtout sur la fin de ma macro, sur coller les colonnes côte à côte.

Et si possible, sur la première ligne, recopier en titre le nom de la feuille.

Comme je fais des statistiques sur des pièces, ça me remontera le numéro.

Je joins un fichier exemple (apparemment c'est apprécié ).

Merci beaucoup!

29exemple-macro.xlsm (16.22 Ko)

bonjour CompactDad

bonjour le forum,

une proposition, le résultat se met sur la feuille data à partir de A1

Sub aargh()
Dim wsd As Worksheet, ws As Worksheet, dl As Long, col As Long
    Set wsd = Sheets("data")
    For Each ws In Worksheets
        If ws.Name <> "Data" Then
            dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
            col = col + 1
            wsd.Cells(1, col) = ws.Name
            wsd.Cells(2, col).Resize(dl).Value = ws.Cells(1, 3).Resize(dl).Value
        End If
    Next
End Sub

Bonjour h2so4,

C'est presque parfait!

Peux-tu juste me montrer quel endroit modifier pour commencer à écrirer en E7 (j'aurai mes boutons d'activation de macro au-dessus c'est pour ça...).

Merci beaucoup en tout cas pour ton temps, tu vas m'en faire gagner!

C'était simple au final...

Bonjour à tous,

voici une adaptation du code pour mettre le résultat à partir de E7

Sub aargh()
    Dim wsd As Worksheet, ws As Worksheet, dl As Long, col As Long
    Set wsd = Sheets("data")
    With wsd.Range("E7")
        For Each ws In Worksheets
            If ws.Name <> wsd.Name Then
                dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
                col = col + 1
                .Cells(1, col) = ws.Name
                .Cells(, col).Resize(dl).Value = ws.Cells(1, 3).Resize(dl).Value
            End If
        Next
    End With
End Sub

Merci beaucoup!

C'est ce que j'avais besoin.

Je vais travailler avec ça.

Très bonne journée!

Bonjour CompactDad,

merci de cloturer le sujet si tu as eu ta réponse.

Rechercher des sujets similaires à "copier colonnes suite"