C'est parafait, merci. Et si je rajoute d'autres mois, que dois-je modifier au code ?Bonjour ETOTO,
Voici ton fichier en retour.
Je n'ai pas pu le faire via PQ car et d'une, je ne m'y connais pas assez et de deux, ma version excel est incompatible avec
Donc voici une solution via macro (qui à mon avis peut être largement amélioré) si j'ai bien compris la demande.
@+ Lolote83
Sub Regroupement()
Application.ScreenUpdating = False
Range("Tab_Groupe").Delete 'Effacement du tableau
For F = 1 To 3 'On tourne sur 3 valeurs car 3 mois
Select Case F
Case Is = 1
Set xPlage = Range("janvier_2021") 'F=1 donc on prend le tableau JANVIER
Case Is = 2
Set xPlage = Range("février_2021") 'F=2 donc on prend le tableau FEVRIER
Case Is = 3
Set xPlage = Range("mars_2021") 'F=3 donc on prend le tableau MARS
End Select
xNewLig = [Tab_Groupe].ListObject.ListRows.Add.Index 'On rajoute une ligne sur tableau structuré TAB_CLIENT
For Each xCell In xPlage
Range("Tab_Groupe")(xNewLig - 2 + xCell.Row, xCell.Column) = xCell 'On inscrit dans le tableau les données
Next xCell
Next F
Application.ScreenUpdating = True
End Sub
Re,Re bonjour,
C'est la ou mon code n'est pas au top.
Voici donc le code commenté, cela te donnera une marche à suivre
Maintenant, si tes prochains tableaux sont bien notés comme les précédents, je vais voir pour améliorer la chose. Je m'y penche cet après midi.
@+ Lolote83VB:Sub Regroupement() Application.ScreenUpdating = False Range("Tab_Groupe").Delete 'Effacement du tableau For F = 1 To 3 'On tourne sur 3 valeurs car 3 mois Select Case F Case Is = 1 Set xPlage = Range("janvier_2021") 'F=1 donc on prend le tableau JANVIER Case Is = 2 Set xPlage = Range("février_2021") 'F=2 donc on prend le tableau FEVRIER Case Is = 3 Set xPlage = Range("mars_2021") 'F=3 donc on prend le tableau MARS End Select xNewLig = [Tab_Groupe].ListObject.ListRows.Add.Index 'On rajoute une ligne sur tableau structuré TAB_CLIENT For Each xCell In xPlage Range("Tab_Groupe")(xNewLig - 2 + xCell.Row, xCell.Column) = xCell 'On inscrit dans le tableau les données Next xCell Next F Application.ScreenUpdating = True End Sub
Sub Regroupement()
Application.ScreenUpdating = False
Range("Tab_Groupe").Delete 'Effacement du tableau
For F = 1 To 4 'On tourne sur 3 valeurs car 3 mois
Select Case F
Case Is = 1
Set xPlage = Range("janvier_2021") 'F=1 donc on prend le tableau JANVIER
Case Is = 2
Set xPlage = Range("février_2021") 'F=2 donc on prend le tableau FEVRIER
Case Is = 3
Set xPlage = Range("mars_2021") 'F=3 donc on prend le tableau MARS
Case Is = 4
Set xPlage = Range("avril_2021")
End Select
xNewLig = [Tab_Groupe].ListObject.ListRows.Add.Index 'On rajoute une ligne sur tableau structuré TAB_CLIENT
For Each xCell In xPlage
Range("Tab_Groupe")(xNewLig - 2 + xCell.Row, xCell.Column) = xCell 'On inscrit dans le tableau les données
Next xCell
Next F
Application.ScreenUpdating = True
End Sub
Sub Regroupement2()
Application.ScreenUpdating = False
Range("Tab_Groupe").Delete 'Effacement du tableau
xNbrOng = ThisWorkbook.Sheets.Count - 1 'On détermine le nombre d'onglet total du classeur
For F = 1 To xNbrOng 'On tourne sur nombre onglet total-1
xMois1 = CDate("01/" & F & "/2021") 'On trouve le 01 du mois en fonction de F
xMois2 = Format(xMois1, "mmmm") 'On transforme le mois (chiffre 01, 02, 03 ... en lettre Janvier, Février, Mars ....)
Set xPlage = Range(xMois2 & "_2021") 'On affecte à variable xPlage
xNewLig = [Tab_Groupe].ListObject.ListRows.Add.Index 'On rajoute une ligne sur tableau structuré TAB_CLIENT
For Each xCell In xPlage
Range("Tab_Groupe")(xNewLig - 2 + xCell.Row, xCell.Column) = xCell 'On inscrit dans le tableau les données
Next xCell
Next F
Application.ScreenUpdating = True
End Sub
Merci, je le place aussi dans la feuille "GROUPE" ou dans un module ?Re bonjour ETOTO,
Voici donc un nouveau code qui prend en compte directement le nombre d'onglet du classeur.
Attention cependant à l'orthographe des noms de tableaux mais cela devrait fonctionner directement
Pour répondre à ta question ci-dessus : OUI
Voici donc le nouveau code
Hé ho, tu vas devenir un AS du VBA a force ....Code:Sub Regroupement2() Application.ScreenUpdating = False Range("Tab_Groupe").Delete 'Effacement du tableau xNbrOng = ThisWorkbook.Sheets.Count - 1 'On détermine le nombre d'onglet total du classeur For F = 1 To xNbrOng 'On tourne sur nombre onglet total-1 xMois1 = CDate("01/" & F & "/2021") 'On trouve le 01 du mois en fonction de F xMois2 = Format(xMois1, "mmmm") 'On transforme le mois (chiffre 01, 02, 03 ... en lettre Janvier, Février, Mars ....) Set xPlage = Range(xMois2 & "_2021") 'On affecte à variable xPlage xNewLig = [Tab_Groupe].ListObject.ListRows.Add.Index 'On rajoute une ligne sur tableau structuré TAB_CLIENT For Each xCell In xPlage Range("Tab_Groupe")(xNewLig - 2 + xCell.Row, xCell.Column) = xCell 'On inscrit dans le tableau les données Next xCell Next F Application.ScreenUpdating = True End Sub
@+ Lolote83
Et ça m'étonnerait que je devienne un as.Hé ho, tu vas devenir un AS du VBA a force ....
Ne te dévalorise pas.Et ça m'étonnerait que je devienne un as.
Re,Ne te dévalorise pas.
Re,Bonjour,
Non, je ne pense pas. Je suis passé à autre chose mais fais un test et reviens au cas ou avec ton fichier.
@+ Lolote83
Set xPlage = Range(xMois2 & "_2021")