XL 2016 Fusionner requêtes PQ

Etoto

XLDnaute Impliqué
Bonjour,

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.

Merci d'avance
 

Pièces jointes

  • Test pronostic.xlsx
    25.5 KB · Affichages: 5

Lolote83

XLDnaute Accro
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
 

Pièces jointes

  • Copie de ETOTO - Test pronostic.xlsm
    38.4 KB · Affichages: 4

Etoto

XLDnaute Impliqué
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
C'est parafait, merci. Et si je rajoute d'autres mois, que dois-je modifier au code ?
 

Lolote83

XLDnaute Accro
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
@+ Lolote83
 

Etoto

XLDnaute Impliqué
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
@+ Lolote83
Re,

Et si je faisais :

VB:
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

Cela fonctionnerait ?
 

Lolote83

XLDnaute Accro
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
 

Etoto

XLDnaute Impliqué
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
Merci, je le place aussi dans la feuille "GROUPE" ou dans un module ?
Hé ho, tu vas devenir un AS du VBA a force ....
Et ça m'étonnerait que je devienne un as.
 

Etoto

XLDnaute Impliqué
Re,

Malheureusement cela me renvoie l'erreur 1004

Et la ligne ne surbrillance et
VB:
Set xPlage = Range(xMois2 & "_2021")

Arriverais-tu à créer une exception pour les deux dernières feuilles ?

Merci d'avance.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
288 693
Messages
1 894 017
Membres
170 246
dernier inscrit
Fahdj2002
Haut Bas