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 : 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
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