Application.ScreenUpdating
Le
Jaguar

Bien le bonjour à tous.
Pour accélérer le déroulement d'un long processus, j'ai introduit en =
début de macro "Application.ScreenUpdating = False".
Pour connaître automatiquement l'avancement du travail (et diminuer mon i=
mpatience !) j'ai inclus à un endroit dans la macro un "Application.Scree=
nUpdating = False"
suivi d'un "Application.ScreenUpdating = True".
Mais il ne se passe rien, alors que si j'interromps manuellement le dérou=
lement de la Macro (avec "Esc" ou avec un point d'arrêt) l'écran se raf=
raîchit et que je peux ensuite repartir avec "Débogage" ou "Ctrl + Shif=
t + F8".
Comment faire ? Merci pour vos idées géniales.
Pour accélérer le déroulement d'un long processus, j'ai introduit en =
début de macro "Application.ScreenUpdating = False".
Pour connaître automatiquement l'avancement du travail (et diminuer mon i=
mpatience !) j'ai inclus à un endroit dans la macro un "Application.Scree=
nUpdating = False"
suivi d'un "Application.ScreenUpdating = True".
Mais il ne se passe rien, alors que si j'interromps manuellement le dérou=
lement de la Macro (avec "Esc" ou avec un point d'arrêt) l'écran se raf=
raîchit et que je peux ensuite repartir avec "Débogage" ou "Ctrl + Shif=
t + F8".
Comment faire ? Merci pour vos idées géniales.
Au moment opportun, utilise une boîte de message Msgbox "Fin étape1"
pour arrêter temporairement la macro.
Si tu préfères, dans la procédure générale, tu appelles cette procédure :
Call Delai(10)
'10 représente le nombre de secondes que la macro va
s'arrêter pour reprendre automatiquement ses activités après la durée prévue.
'------------------------------------------------------------
Sub Delai(T as double)
Application.ScreenUpdating = True
T = Timer + T
Do While Timer <= T
DoEvents
Loop
Application.ScreenUpdating = False
End Sub
'------------------------------------------------------------
Tu peux choisir d'afficher un message dans une cellule à différents moments
lors de l'exécution de la macro. Adapte l'adresse de la cellule.
Application.ScreenUpdating = True
Range("A1") = "Fin étape 1"
DoEvents
Application.ScreenUpdating = False
Merci à MichD
Le lundi 6 avril 2015 11:39:34 UTC+2, Jaguar a écrit :