Regrouper des certains onglets de mon classeur en dans une nouvelle feuille

Bonjour

J'ai un classeur qui possède plusieurs (12) onglets renommés. Les onglets possèdent des tableaux identiques par groupe de 3. Je souhaite donc les regrouper sur 3 feuilles "recap" différentes que je vais renommer de sorte qu'à chaque ajout d'informations sur un onglet, les différentes feuilles "recap" se mettent aussi à jour.

J'attends que vous me proposez un code vba qui puisse le faire s'il vous plait.

Cordialement.

Salut Leyi, et bienvenue sur ce Forum

Un fichier test à nous présenter ?

A te lire

Bonjour,

sans fichier de base, je te propose de retravailler ceci ...

mais une solution POwerQuery doit être possible aussi (donc sans VBA)

edit : bonjour Juice

Merci pour votre promptitude

Je vous envoie le fichier test

Je souhaite regrouper dans "recap a" tous les onglets a1, a2 et a3.

dans "recap b" tous les onglets b1, b2 et b3.

dans "recap c" tous les onglets c1, c2 et c3.

et de telle manière que lorsque je rajoute un enregistrement, le tableaux se mette à jour automatiquement.

Merci d'avance.

9fichier-test.xlsx (16.98 Ko)

Salut Leyi, et bienvenue sur ce Forum

Un fichier test à nous présenter ?

A te lire

Merci Juice

ci joint le fichier test

10fichier-test.xlsx (16.98 Ko)

Bonjour,

sans fichier de base, je te propose de retravailler ceci ...

mais une solution POwerQuery doit être possible aussi (donc sans VBA)

edit : bonjour Juice

Merci Steelson

Ci-joint le fichier de base

13fichier-test.xlsx (16.98 Ko)

Voici (attention tu as mis un rAcap)

11fichier-test.xlsm (29.20 Ko)
Sub actualiser()
    recap "recap a", "a"
    recap "racap b", "b"
    recap "recap c", "c"
End Sub
Sub recap(recap As String, prefixe As String)

Sheets(recap).Select

    ligne = 2
    nbcolonnes = Cells(1, Columns.Count).End(xlToLeft).Column
    nomOnglet = ActiveSheet.Name
    Dim ws As Worksheet
        For Each ws In ActiveWorkbook.Worksheets
            With ws
                If Left(.Name, Len(prefixe)) = prefixe Then
                    debut = 2
                    fin = .Cells(Rows.Count, 1).End(xlUp).Row
                    For i = debut To fin
                        For j = 1 To nbcolonnes
                            Cells(ligne, j) = .Cells(i, j)
                        Next
                        ligne = ligne + 1
                    Next i
                End If
            End With
        Next

End Sub
Sub effacer()
    Sheets("recap a").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    Sheets("racap b").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    Sheets("recap c").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
End Sub
Sub actualiser()
    recap "recap a", "a"
    recap "racap b", "b"
    recap "recap c", "c"
End Sub
Sub recap(recap As String, prefixe As String)

Sheets(recap).Select

    ligne = 2
    nbcolonnes = Cells(1, Columns.Count).End(xlToLeft).Column
    nomOnglet = ActiveSheet.Name
    Dim ws As Worksheet
        For Each ws In ActiveWorkbook.Worksheets
            With ws
                If Left(.Name, Len(prefixe)) = prefixe Then
                    debut = 2
                    fin = .Cells(Rows.Count, 1).End(xlUp).Row
                    For i = debut To fin
                        For j = 1 To nbcolonnes
                            Cells(ligne, j) = .Cells(i, j)
                        Next
                        ligne = ligne + 1
                    Next i
                End If
            End With
        Next

End Sub
Sub effacer()
    Sheets("recap a").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    Sheets("racap b").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    Sheets("recap c").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
End Sub

Merci pour ton aide mais je viens d'essayer le code, il ne recopie que la 1ère colonne et pas le reste des informations

As-tu essayé le fichier posté ou as-tu copié le code ?

Place d'abord les en-têtes dans les onglets recap...

capture d ecran 346 capture d ecran 347

Bonjour,

nouvelle version intégrant la recopie des en-têtes

Sub actualiser()
    recap "recap a", "a"
    recap "recap b", "b"
    recap "recap c", "c"
End Sub
Sub recap(recap As String, prefixe As String)
    Sheets(recap).Select
    Range("A1").Select
    Range("A1").CurrentRegion.ClearContents
    ligne = 2
    nomOnglet = ActiveSheet.Name
    Dim ws As Worksheet
        For Each ws In ActiveWorkbook.Worksheets
            With ws
                If Left(.Name, Len(prefixe)) = prefixe Then
                    If Range("A1") = "" Then
                        .Rows("1:1").Copy
                        ActiveSheet.Paste
                    End If
                    debut = 2
                    fin = .Cells(Rows.Count, 1).End(xlUp).Row
                    For i = debut To fin
                        For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
                            Cells(ligne, j) = .Cells(i, j)
                        Next
                        ligne = ligne + 1
                    Next i
                End If
            End With
        Next
End Sub

As-tu essayé le fichier posté ou as-tu copié le code ?

Place d'abord les en-têtes dans les onglets recap...

Capture d’écran (346).pngCapture d’écran (347).png

Merci, mon problème a été resolu.

Rechercher des sujets similaires à "regrouper certains onglets mon classeur nouvelle feuille"