Bonsoir à tous,

J'ai trouvé sur ce forum un bout de code merveilleux, qui correspond parfaitement à ce qu'il me fallait, sauf sur un petit détail :

En effet, je voulais une macro, qui me permet de récupérer toutes les infos de différents classeur excel qui sont situés dans le même répertoire, afin de le coller dans un fichier "base de données".

J'ai trouver celle là

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
41
42
'Nécessite d'activer la référence
    'Microsoft ActiveX Data Objects x.x Library
Dim Cn As ADODB.connection
Dim Rs As ADODB.Recordset
Dim xConnect As String, Cible As String
Dim Fichier As String, Dossier As String, Feuille As String
Dim i As Long
 
'nom du répertoire contenant les classeurs à regrouper
Dossier = "D:\Boulot\Argent_poche_SNR\Tableau_de_bord"
'Nom de la feuille dans les classeurs fermés
'Ne pas oublier le symbole $ après le nom de la feuille
Feuille = "Feuil1$"
i = 2
 
Fichier = Dir(Dossier & "\*.xls")
'boucle sur les fichiers du repertoire
Do While Len(Fichier) > 0
    xConnect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
    "ReadOnly=1;DBQ=" & Dossier & "\" & Fichier
    'connection classeur
    Set Cn = New ADODB.connection
    Cn.Open xConnect
 
    'Requete
    Cible = "SELECT * FROM [" & Feuille & "];"
 
    Set Rs = New ADODB.Recordset
    Rs.Open Cible, xConnect, adOpenStatic, adLockOptimistic, adCmdText
 
    'Ecriture dans la feuille de calcul
    If Not Rs.EOF Then Cells(i, 1).CopyFromRecordset Rs
    i = Cells(i, 1).End(xlDown).Row + 1
 
    Rs.Close
    Cn.Close
    Set Cn = Nothing
    Set Rs = Nothing
    Fichier = Dir()
Loop
 
MsgBox "Terminé"

mais elle marche pour les fichiers .xls. Y'a t-il moyen de la transformer pour faire fonctionner les fichiers .xlsx ?

J'ai des connaissances en macro, mais peu sur le fonctionnement des connexions entre classeurs. J'ai essayé de lire le tuto de silkyroad, mais le type de connexion n'étant pas tout à fait pareil, je suis perdu ...

j'ai tenté bêtement de changer les .xls en .xlsx dans la macro, mais j'ai une erreur "gestionnaire de pilote ODBC source de donnée introuvable, et nom de pilote non spécifié"

je vous remercie d'avance,

charles