Bonjour,
Je cherche à afficher un chronomètre, par exemple ici dans la cellule A1 (nommée CHRONO) qui affiche TOUTES les secondes pendant que se déroule un traitement (Macro "Go" activé par le bouton GO). La macro "Go" déclenche le chronomètre et appelle la macro "MaMacroQuiPrendDuTemps" . Le chronomètre est arrêté avec le bouton STOP.
Mon problème : L'affichage du chronomètre ne se produit qu'après la fin de la macro "MaMacroQuiPrendDuTemps", c'est à dire environ 3 ou 4 secondes après le déclenchement du traitement.
Mon traitement réel est une suite de macros pour lesquelles :
- il n'y a aucune intervention utilisateur,
- le traitement ne comporte que des instructions séquentielles (pas de boucles qui auraient éventuellement permis tous les x itérations de reprendre la main pour afficher la valeur courante du chronomètre).
Ici, dans la macro "MaMacroQuiPrendDuTemps" j'ai mis des boucles, juste pour faire durer artificiellement le traitement.
Peut-être une solution en utilisant le chronomètre de windows avec un paramétrage du mode "Chronomètre" ou "Compte à rebours" serait possible, mais là encore, je ne sais pas faire.
Merci à ceux qui se pencheront sur mon problème.
Le code VBA
Je cherche à afficher un chronomètre, par exemple ici dans la cellule A1 (nommée CHRONO) qui affiche TOUTES les secondes pendant que se déroule un traitement (Macro "Go" activé par le bouton GO). La macro "Go" déclenche le chronomètre et appelle la macro "MaMacroQuiPrendDuTemps" . Le chronomètre est arrêté avec le bouton STOP.
Mon problème : L'affichage du chronomètre ne se produit qu'après la fin de la macro "MaMacroQuiPrendDuTemps", c'est à dire environ 3 ou 4 secondes après le déclenchement du traitement.
Mon traitement réel est une suite de macros pour lesquelles :
- il n'y a aucune intervention utilisateur,
- le traitement ne comporte que des instructions séquentielles (pas de boucles qui auraient éventuellement permis tous les x itérations de reprendre la main pour afficher la valeur courante du chronomètre).
Ici, dans la macro "MaMacroQuiPrendDuTemps" j'ai mis des boucles, juste pour faire durer artificiellement le traitement.
Peut-être une solution en utilisant le chronomètre de windows avec un paramétrage du mode "Chronomètre" ou "Compte à rebours" serait possible, mais là encore, je ne sais pas faire.
Merci à ceux qui se pencheront sur mon problème.
Le code VBA
VB:
Public ProchainChrono, Start
Sub Go()
Start = Timer()
majChrono
MaMacroQuiPrendDuTemps
End Sub
Sub MaMacroQuiPrendDuTemps()
Dim Cellule As Range
'Du code bidon qui dure et pendant lequel le chrono doit continuer à s'afficher toutes les secondes
For Each Cellule In Range("MA_PLAGE")
Cellule.Value = Int((1000 - 1 + 1) * Rnd + 1)
Next Cellule
For Each Cellule In Range("MA_PLAGE")
Cellule.Value = Cellule.Value * 3
Next Cellule
End Sub
Sub majChrono()
Sheets("Chrono").Range("CHRONO") = Format((Timer() - Start) / 3600 / 24, "hh:mm:ss")
ProchainChrono = Now + TimeValue("00:00:1")
Application.OnTime ProchainChrono, "majChrono"
End Sub
Sub Arret()
On Error Resume Next
Application.OnTime ProchainChrono, Procedure:="majChrono", Schedule:=False
End Sub