Bonjour le forum,
Je me retourne vers vous pour un petit problème.
Je cherche à consolider dans un classeur les données contenues dans d'autres classeurs.
Dans la faq excel, j'ai trouvé un code qui fonctionne très bien:
Le seul problème c'est que ce code ne fonctionne que pour la version Excel 2003.
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
43
44
45
46 Comment fusionner tous les classeurs fermés d'un répertoire, à la suite dans une nouvelle feuille de calcul ? http://excel.developpez.com/faq/index.php?page=Classeur#ClasseursFermes '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 = "C:\nom dossier" '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é"
J'utilise la version 2007 et il m'arrive de recevoir et de travailler sur les deux versions.
Donc j'ai crée un fichier xlsm contenant le code ci-dessus en modifiant "xls" en "xlsx", en prenant soin d'activer différentes bibliothèques recommandées.
Mais cette manip génère des erreurs.
Je souhaite pouvoir consolider les données dans un fichier source et ce, quelque soit la version excel des fichiers reçus (xls, xlsx ou xlsm).
Pourriez-vous me dire comment faire pour améliorer le code ci-dessus afin de pouvoir lire les données des fichiers xls, xlsx et xlsm et les consolider dans un fichiers source ?
Partager