Bonjour à tous,

J' utilise la macro suivante qui copie une feuille de chaque classeur fermé d'un dossier sur un classeur actif mais qui fonctionne seulement si le classeur destination comporte autant de feuille que de classeur source
J'ai 2 questions
1) Comment intégrer dans cette macro "Workbook Copy after" si le classeur destination ne comprend à l'origine qu'une seule feuille afin de rajouter une feuille après chaque boucle faite sur les classeurs sources?
2) Comment adapter cette macro si je veux copier seulement la feuille du dernier classeur enregistré dans le dossier source (dossier comprenant de 1 à 12 classeurs, un par mois)



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub ImportCGM()
 
    Dim Cn As ADODB.Connection
    Dim Fichier As String, chemin As String, i As Long
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    chemin = "C:\Users\G\Desktop\Mensuel"
    Fichier = Dir(chemin & "\*.xlsm")
    NomFeuille = Feuil1.Name
 
    i = 1
 
    Do While Fichier <> ""
    If Fichier <> ThisWorkbook.Name Then
 
    Set Cn = New ADODB.Connection
 
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
        .Open
    End With
 
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    Sheets(i).Range("A1").CopyFromRecordset Rst
 
    Cn.Close
    Set Cn = Nothing
    i = i + 1
    End If
    Fichier = Dir
    Loop
End Sub
Merci infiniment pour vos réponses