Bonsoir à tous,

Alors il n'y a pas longtemps j'ai réussi à adapter un code mais mes besoins ont evolué.

Alors voici le code traditionnelle pour la copie de données depuis un classeur fermé :

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
Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\...\Exo\Base.xlsx"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Feuil1"
 
    Set Cn = New ADODB.Connection
 
    '--- Connection ---
    With Cn
        .Provider = ""Microsoft.ACE.OLEDB.12.0""
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------
 
    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst
 
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
 
End Sub
Alors aujourd'hui j'aimerais pouvoir copier / coller plusieurs feuilles.
J'ai essayé de créer un autre module avec les modifications nécessaires. Malheuresement il n'y a toujours que une seule qui marche (la première que je lance...) Si je lance "macro1" en premier "macro2" ne marche pas et inversement.

J'ai pas essayé de faire une seule macro mais je reste spetique.

Voilà mon problème de soir.

Merci.