XL 2016 Fusionner requêtes PQ

  • Initiateur de la discussion Initiateur de la discussion Etoto
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Etoto

XLDnaute Barbatruc
Supporter XLD
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

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

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 ?
 
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 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 ?
 
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
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.
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
109
Réponses
3
Affichages
185
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
170
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
184
Réponses
40
Affichages
1 K
Retour