Bonjour,
J'ai écris une fonction qui permet à l'ouverture de mon fichier excel:
1) d'aller dans tous les sous-dossiers du fichier courant
2) de récupérer les fichiers excels de ces sous-dossiers
3) de récupérer la valeur d'une cellule de ces fichiers excels
Voici le code (c'est en anglais par habitude de programmation):
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 Private Sub Workbook_Open() Dim fso Dim objFolder Dim objSubFolders Dim objSubFolder Dim objOutputString Dim objSubFiles Dim objSubFile 'Clearing Content of the tests listing table Range("$A$21:$E$40").ClearContents 'Creating File System Object Set fso = CreateObject("Scripting.FileSystemObject") 'Getting the Folder Object Set objFolder = fso.GetFolder(thisworkbook.Path) 'Getting the list of SubFolders Set objSubFolders = objFolder.SubFolders 'Set the initial line to 21 Line = 21 'Looping on subFolders of the current WorkSheet For Each objSubFolder In objSubFolders Set objSubFiles = objSubFolder.Files 'Looping on Files of the current subFolder For Each objSubFile In objSubFiles If fso.getExtensionName(objSubFile) = "xlsm" Then Cells(Line, 1) = Workbooks(objSubFile).Sheets(1).Range("A1").Value Line = Line + 1 End If Next Next End Sub
Le problème est qu'excel me jette lorsque je lance le fichier excel avec l'erreur:
"incompatibilité de type"
erreur qui se produit à la ligne:
soit lors de la récupération de la valeur de la cellule des fichiers du sous-dossier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(Line, 1) = Workbooks(objSubFile).Sheets(1).Range("A1").Value
Je ne comprend pas trop pourquoi...
Merci d'avance,
Partager