VBA: Marquer une pause


Vous avez besoin de marquer une pause dans votre macro pour une raison ou une autre? C'est bien sûr possible et le code nécessaire est très simple car VBA contient une méthode spécifique pour cela. Il s'agit de la méthode .Wait de la classe Application.

Code VBA pour marquer une pause dans l'exécution d'une macro

L'utilisation de la méthode .Wait ne requiert que l'indication de la durée de la pause. Pour marquer une pause d'une seconde, le code VBA sera le suivant:

Application.Wait(Now + TimeValue("00:00:01"))

So vous voulez attendre une minute, le code sera:

Application.Wait(Now + TimeValue("00:01:00"))

… et ainsi de suite.

Ceci est un cas simple qui suspend l'exécution de la macro. Cela peut être utile, par exemple si vous copiez des fichiers externes volumineux et vous ne voulez pas que la macro aille "trop vite".

Explications concernant le code VBA

Si vous voulez savoir, comment cela fonctionne, voici le détail du code. La méthode .Wait suspend l'exécution du code VBA jusqu'à un moment précis dans le temps. Par exemple, jusqu'à 14h32 et 15 secondes. Pour pouvoir utiliser un délai plutôt qu'une heure précise, on fait appel à deux fonctions VBA:

  1. fonction Now() qui nous indique l'heure actuelle
  2. fonction TimeValue() qui transforme un texte (ici = indication du délai) en temps

On détermine alors l'heure précise à laquelle le code atteint l'endroit de l'exécution de la pause et on y ajoute une durée souhaitée.

Illustration: on veut ajouter une pause de 2 minutes. On exécute la macro et la pause se déclenche à 14:25:18 ( Now() ). On ajoute donc à cette heure précise une durée de 2 minutes ( + TimeValue("00:02:00") ) ce qui indiquera à la méthode .Wait le temps précis du redémarrage du code – 14:27:18. C'est-à-dire exactement 2 minutes…

Exemple d'utilisation de la pause en VBA

Voici un exemple qui vous vous montre comment cela fonctionne. Il suffit d'indiquer la durée de la pause et la macro va vous indiquer dans un MessageBox l'heure à laquelle la pause a été déclenchée et à quelle heure l'exécution du code a reprise.

Sub TestPauseEnVBA()
' par Excel-Malin.com (http://excel-malin.com)

Dim MaPause As String
Dim HeurePauseDebut As Date
Dim HeurePauseFin As Date

On Error GoTo TestPauseErreur
MaPause = "00:00:04" 'indiquez ici la durée de la pause

HeurePauseDebut = Time
Application.Wait (Now + TimeValue(MaPause))
HeurePauseFin = Time

MsgBox "Début de la pause: " & HeurePauseDebut & Chr(13) & Chr(10) & "Fin de la pause: " & HeurePauseFin
Exit Sub

TestPauseErreur:
MsgBox "Une erreur s'est produite..."
End Sub

La page officielle de Microsoft concernant la méthode .Wait.

 

15 0

Pourrait vous intéresser

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.