Tuto : technique pour attendre

Contenu du snippet

Simples recommendations pour faire des boucles d'attente.
Dans ces exemples, on va attendre 5 secondes, mais cela marche pour des valeurs beaucoup plus grandes (par contre pas utilisable en dessous de la seconde).

Technique 1 (avec bug possible) :
---------------------------------------
La technique consiste à utiliser l'instruction (pas l'objet) Timer.
Cette instruction renvoie le nombre de secondes écoulées depuis minuit.
Dim Debut As Long
Debut = Timer
Do While Timer - Debut < 5
DoEvents ' Repasse la main au système en attendant
Loop

Cette technique a un gros inconvénient : à minuit, Timer repasse à zéro : Si vous faites votre boucle vers cette heure là, vous risquez d'attendre longtemps.

Technique 2 (sans bug) :
-----------------------------
Là, on va utiliser la date système pour faire l'attente :

Dim Debut As Date
Debut = Now ' renvoie la date et l'heure courante
Do While Abs(DateDiff("s", MaDate, Now)) < 5
DoEvents ' Repasse la main au système en attendant
Loop

Cette solution a le gros avantage d'être fiable, et de pouvoir attendre des durées quelconques : Il suffit re remplacer "s" (secondes) par une des autres unités de temps :
s Secondes
n Minutes (et pas m)
h Heures
d Jours
m Mois
y Années

Dernière précision :
----------------------
Les puriistes vous dirons que utiliser un DoEvents mange du temps machine; en effet, la boucle est exécutée quelques milliers de fois par secondes.
Certes (y cause bien, hein !), vous pouvez toujours la remplacer la l'API "Sleep" :
Vous mettez cette déclaration dans la partie Déclaration de votre feuille ou module
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
et vous remplacez les "DoEvents" par des "Sleep 1000" qui demandera au système d'attendre 1 seconde (1000 millisecondes) avant de poursuivre.

Vala. En espérant que ça puisse vous servir ...
Jack

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.