Bonjour,
j'ai un cas de figure assez étrange. J'ai besoin d'ouvrir des centaines de fichiers puis d'effectuer certaines instructions sur ces fichiers. Problème : lorsque j'ouvre le fichier avec un macro et que je déclare des plages dans ce classeur, le code ne fonctionne pas. Plus bizarre encore, lorsque j'exécute ce code en pas à pas, ça fonctionne.
Voici mon code que vous puissiez reproduire le problème chez vous (activer Microsoft Scripting Runtime dans les références) :
Le code s'arrête à l'instanciation de plage, alors que normalement, le classeur est bien ouvert. Quand on le fait pas à pas, tout fonctionne parfaitement. Quelqu'un a une idée ? Est-ce que ce serait lié au fait que le classeur (un peu volumineux et qui met quelques secondes à s'ouvrir) n'est pas bien ouvert au moment de l'exécution de cette ligne (alors que quand on le fait en pas à pas, il a le temps de s'ouvrir) ? J'ai tenté des trucs avec des while Workbooks.count=1 DoEvents...sans succès...
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 Sub titi() Dim systemeDeFichiers As Scripting.FileSystemObject Set systemeDeFichiers = New Scripting.FileSystemObject Dim repertoire As Folder Set repertoire = systemeDeFichiers.GetFolder(ThisWorkbook.Path) Dim fichier As File Dim i As Integer Let i = 0 For Each fichier In repertoire.Files If InStr(fichier.Name, "Equity") <> 0 Then i = i + 1 Debug.Print i Dim classeur As Workbook Set classeur = Application.Workbooks.Open(fichier.Path) Dim plage As Range Set plage = classeur.Worksheets(1).Range("AJ1, AM1, AP1") (Instructions) End If Next fichier End Sub
Je vous remercie
Partager