XL 2016 Fusionner requêtes PQ

Etoto

XLDnaute Barbatruc
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: 24

Lolote83

XLDnaute Barbatruc
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: 12

Etoto

XLDnaute Barbatruc
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 Barbatruc
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 Barbatruc
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 Barbatruc
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 Barbatruc
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.
 

Discussions similaires

Réponses
17
Affichages
395

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33