Bonjour,
Je travaille actuellement sur un traitement relativement simple de multiples fichiers (environ 900) au sein d'une arborescence.
Le processus
-Ouverture du fichier
-Traitement
-Fermeture du fichier
...est résolu dans une boucle sur un classeur témoin. (vide : 16 ko)
Dans ce contexte, l'ensemble du processus et le traitement lui-même du classeur témoin est instantané .

Le problème est que dans la réalité chaque fichier (.xlsx) cible fait 18 Mo...
Même en mode de "Calcul sur ordre" l'ouverture, puis l'enregistrement puis la fermeture de chaque classeur prend une petite minute...
J'imagine assez facilement que la lecture de la totalité mon programme sera largement terminé avant même que le premier fichier soit complètement ouvert...
Je vais donc certainement être obligé d'intégrer dans ma boucle une (ou plusieurs...) instructions DoEvents permettant d'attendre :
Que le classeur soit ouvert
puis ...
Que le classeur soit enregistré et fermé avant de continuer le traitement.
Ce que je conceptualise de la manière suivante (en pseudo code) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Workbooks.Open("blabla.xlsx")
While "le classeur n'est pas prêt"
    DoEvents
Wend
...Traitement proprement dit puis :
 
While "le classeur actif n'est pas enregistré et fermé"
    DoEvents
Wend
Next ouverture de classeur.
La question est :

Comment conditionner l'exécution des boucles DoEvents jusqu'à ce que la macro puisse se poursuivre.
C'est à dire en étant certain qu'aucun processus en cours ne bloque l'exécution...

Hum... Suis-je clair ?