Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[aide] Pauser une macro entre 1 et 60 secondes aléatoirement ?

4 réponses
Avatar
albert
Bonjour à tous,

Je souhaiterais qu'à un moment donné ma macro s'arrete quelques secondes (ce
nombre de secondes étant choisis aléatoirement entre 1 et 60 secondes)

Je ne suis pas très doué en vba (!) mais après plusieurs recherches
infructueuses sur google il
semblerait que je doive utiliser un mélange de ces deux lignes (??) :

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

et

RANDBETWEEN(0,60)


Hélas, je n'arrive pas à imbriquer la seconde dans la première.

Merci d'avance pour toute aide et ... mes meilleurs voeux en cette nouvelle
année. ;-)

Albert

4 réponses

Avatar
michdenis
Bonjour Albert,

Déclarations des variables :
Dim S As Double
Dim Arret As Integer

'Variable contenant le nombre de seconde
'que la macro doit arrêter
Arret = 5 'secondes


'Section à insérer dans ta procédure où tu désires
que ton code s'arrête.
'------------
S = Timer + Arret
While Timer < S
DoEvents
Wend
'------------



P.S. à cause de la nature de Timer, cette macro ne
doit pas débuter une journée et se terminer une autre journée.
exemple : 23:59:15 et se terminer à 00:00:22 sec.


Salutations!




"albert" <nomail> a écrit dans le message de news: 43bc6a1b$0$27621$
Bonjour à tous,

Je souhaiterais qu'à un moment donné ma macro s'arrete quelques secondes (ce
nombre de secondes étant choisis aléatoirement entre 1 et 60 secondes)

Je ne suis pas très doué en vba (!) mais après plusieurs recherches
infructueuses sur google il
semblerait que je doive utiliser un mélange de ces deux lignes (??) :

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

et

RANDBETWEEN(0,60)


Hélas, je n'arrive pas à imbriquer la seconde dans la première.

Merci d'avance pour toute aide et ... mes meilleurs voeux en cette nouvelle
année. ;-)

Albert
Avatar
JB
Bonjour,

On passe en paramètre le temps d'attente:

Sub essai()
TempoNonBloquante 3
Range("a1") = "ok"
TempoNonBloquante 5
Range("a1") = "ok2"
End Sub

Sub TempoNonBloquante(t)
fin = DateAdd("s", t, Now)
Do While Now < fin
DoEvents
Loop
End Sub

Cordialement JB
Avatar
Daniel
Bonjour.
Essaie :

Randomize
Heure = TimeSerial(Hour(Time), Minute(Time), Second(Time))
Application.Wait Heure + Round(Rnd() * 60)

Cordialement.
Daniel
"albert" <nomail> a écrit dans le message de news:
43bc6a1b$0$27621$
Bonjour à tous,

Je souhaiterais qu'à un moment donné ma macro s'arrete quelques secondes
(ce
nombre de secondes étant choisis aléatoirement entre 1 et 60 secondes)

Je ne suis pas très doué en vba (!) mais après plusieurs recherches
infructueuses sur google il
semblerait que je doive utiliser un mélange de ces deux lignes (??) :

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

et

RANDBETWEEN(0,60)


Hélas, je n'arrive pas à imbriquer la seconde dans la première.

Merci d'avance pour toute aide et ... mes meilleurs voeux en cette
nouvelle
année. ;-)

Albert



Avatar
albert
Bonjour à tous,

Merci pour votre aide précieuse. ;-)
Même si je ne suis pas arrivé à faire fonctionné vos suggestions comme je le
souhaitais, elles m'ont permis par bonheur de trouver ce qui me convenait
(merci aussi à Google!):

Sub Wait()
'would return a random number between 1 and 60

Dim LRandomNumber As Integer
LRandomNumber = Int((60 - 1 + 1) * Rnd + 1)

Application.Wait Time + TimeSerial(0, 0, LRandomNumber)

'Application.Wait Time + TimeSerial(0, 0, 60)
' Continues here after pause

End Sub


Merci encore je suis ravis! :-)
Cordialement,
Albert


"Daniel" a écrit dans le message de news:

Bonjour.
Essaie :

Randomize
Heure = TimeSerial(Hour(Time), Minute(Time), Second(Time))
Application.Wait Heure + Round(Rnd() * 60)

Cordialement.
Daniel
"albert" <nomail> a écrit dans le message de news:
43bc6a1b$0$27621$
Bonjour à tous,

Je souhaiterais qu'à un moment donné ma macro s'arrete quelques secondes
(ce
nombre de secondes étant choisis aléatoirement entre 1 et 60 secondes)

Je ne suis pas très doué en vba (!) mais après plusieurs recherches
infructueuses sur google il
semblerait que je doive utiliser un mélange de ces deux lignes (??) :

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

et

RANDBETWEEN(0,60)


Hélas, je n'arrive pas à imbriquer la seconde dans la première.

Merci d'avance pour toute aide et ... mes meilleurs voeux en cette
nouvelle
année. ;-)

Albert