108 votes

Comment faire une pause pendant un temps spécifique? (Excel/VBA)

J'ai une feuille de calcul Excel qui contient le macro suivant. J'aimerais l'exécuter en boucle chaque seconde mais je ne trouve pas la fonction pour le faire. Est-ce possible ?

Sub Macro1()
'
' Macro1 Macro
'
Do
    Calculate
    'Ici je veux attendre une seconde

Loop
End Sub

138voto

Benoit Points 39210

Utilisez la méthode Wait :

Application.Wait Now + #0:00:01#

ou (pour Excel 2010 et les versions ultérieures) :

Application.Wait Now + #12:00:01 AM#

64voto

Buggabill Points 5272

Ajoutez ceci à votre module

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Ou, pour les systèmes 64 bits utilisez :

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Appelez-le dans votre macro comme ceci :

Sub Macro1()
'
' Macro1 Macro
'
Do
    Calculate
    Sleep 1000   ' délai de 1 seconde

Loop
End Sub

44voto

Achaibou Karim Points 31

Au lieu d'utiliser :

Application.Wait(Maintenant + #0:00:01#)

je préfère :

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

parce que c'est beaucoup plus facile à lire par la suite.

21voto

clemo Points 21

Celui-ci fonctionne parfaitement pour moi. insérez n'importe quel code avant ou après la boucle "do until". Dans votre cas, placez les 5 lignes (time1 = & time2 = & "do until" loop) à la fin à l'intérieur de votre boucle do

sub whatever()
Dim time1, time2

time1 = Now
time2 = Now + TimeValue("0:00:01")
    Do Until time1 >= time2
        DoEvents
        time1 = Now()
    Loop

End sub

12voto

dbuskirk Points 46

La déclaration pour Sleep dans kernel32.dll ne fonctionnera pas dans Excel 64 bits. Ceci serait un peu plus général:

#If VBA7 Then
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X