Code qui fonctionne en pas à pas (F8), mais pas lors de l'exécution
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) :
Code:
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 |
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...
Je vous remercie