Comment utiliser les commandes wait et sleep en VBA ?
Commande d’attente VBA
Dans VBA, la commande WAIT (méthode) vous aide à mettre en attente toutes les activités que vous effectuez dans Excel pendant un certain temps ou jusqu’à un moment précis. En termes simples, vous pouvez faire attendre VBA quelques secondes, minutes, voire heures, ou jusqu’à une heure fixe. Il a un argument qui nécessite que vous le spécifiiez.
Étapes pour utiliser VBA Wait
- Tout d’abord, utilisez le mot-clé « Application » et tapez un point (.) pour obtenir la liste des propriétés et des méthodes.
- Après cela, sélectionnez ou tapez la méthode « Attendre ».
- Maintenant, spécifiez l’argument « Time » pour indiquer à VBA combien de temps vous voulez attendre.
- À la fin, exécutez le code pour mettre en attente toutes les activités dans Excel.
Dans ce code, vous avez utilisé NOW et TIMEVALUE ( VBA Functions ) pour indiquer à VBA d’attendre dix secondes à partir du moment où vous exécutez le code. Ainsi, une fois les dix secondes écoulées, l’instruction IF testera la condition et s’exécutera en vous montrant une boîte de message avec le message « Wait Over ».
Sub vba_wait_example()
If Application.Wait(Now + TimeValue("00:00:10")) = True Then
MsgBox "Wait Over"
End If
End Sub
Vous pouvez également utiliser la méthode Wait pour laisser Excel attendre toutes les activités jusqu’à une heure spécifique. Le code suivant attend jusqu’à 13h00. Donc, comme il est 12h52 dans mon système en ce moment, ce code de ligne le fera attendre les 8 prochaines minutes.
Application.Wait "13:00:00"
Remarque : Avec la méthode d’attente, vous ne pouvez attendre qu’une seconde au moins.
VBA Veille
Sleep est une fonction Windows ( sous les fichiers DLL Windows ; vous devez importer cette fonction à l’aide d’une instruction de code ) qui peut vous aider à mettre en pause ou à ajouter un délai lors de l’exécution d’une macro . Dans cette fonction, vous pouvez spécifier le temps en millisecondes, mais vous ne pouvez pas arrêter la fonction de veille une fois qu’elle a tout mis en pause.
Utiliser la fonction de veille dans VBA
- Tout d’abord, vous devez utiliser l’instruction de code pour importer la fonction sleep depuis la « bibliothèque kernel32 ».
- Et puis vous devez vous assurer d’ajouter la déclaration « PtrSafe » si vous utilisez Excel 64 bits.
- Ensuite, vous devez appeler la fonction sleep dans le code.
- A la fin, indiquez le temps (millisecondes) pendant lequel vous souhaitez retarder le code.
If VBA7 Then
'For 64-Bit versions of Excel
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Else 'For 32-Bit versions of Excel Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) End If Sub vba_sleep() Sleep (10000) 'add code here MsgBox "Finished" End Sub
Dans le code ci-dessus, vous avez 10 000 millisecondes, ce qui équivaut à 10 secondes. Lorsque vous exécutez ce code, il retardera le code de 10 secondes, puis affichera une boîte de message.
Remarque : Lorsque vous utilisez la fonction de veille, elle arrête tout dans Excel pendant le temps que vous avez défini, vous ne pouvez même pas le casser. Assurez-vous de consulter ce lien de Microsoft sur la compatibilité entre les versions 32 bits et 64 bits .