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
16 avril 2008 à 18:54
a+
16 avril 2008 à 18:52
14 avril 2008 à 16:30
14 avril 2008 à 16:14
je suis en vb express (2008) et M.VB il est pas content car monsieur M.VB il conait pas abs donc tout betement :
c'est quoi l'équivalent?
Sinon rapport au tuto :
pas mal du tout tres bonne idée mais par contre il aurait fallu préciser que sleep ne fait pas juste une pause il stoppe le programme tout entier (plus aucune interaction) comme l'a dit Xya
18 sept. 2006 à 19:56
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.