Dans ce fichier ci-joint, j'ai le calendrier de Raiffeisen Super League et j'aimerais fusionner mes trois requêtes en une seule pour un seul tableau avec les trois mois dedans.
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
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
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.
VB:
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 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.
VB:
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
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
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
Hé ho, tu vas devenir un AS du VBA a force ....
@+ Lolote83
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
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
Hé ho, tu vas devenir un AS du VBA a force ....
@+ Lolote83
Re bonjour,
Tu peux placer le code sous l'autre dans le même module.
S'il fonctionne et qu'il te convient, tu affectes la macro au bouton et le tour est joué.
Merci t'es gentil, alors si j'ai bien compris, ton nouveau code fonctionne grâce aux feuilles et plus aux tableaux, donc le mieux et de garder un mois par feuille. Si je rajoute une feuille, la macro s'adapte toute seule si j'ai bien compris ton code.