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

écrire une temporisation en vba

12 réponses
Avatar
André
Bonjour,

Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro pour
avoir une temporisation de 40 secondes par exemple.
J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela ne
convient pas et je ne connais pas d'instruction permettant de faire une
temporisation.
Je fais appel à vos compétences pour m'aider.
Merci.

10 réponses

1 2
Avatar
Patrice Henrio
extrait de API guide

'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail:
Me.Caption = "Your system will sleep 5 sec."
'Sleep for 5000 milliseconds
Sleep 5000
Me.Caption = ""
End Sub
Private Sub Form_Load()
Me.Caption = ""
Command1.Caption = "Sleep ..."
End Sub



"André" a écrit dans le message de news:
dn12bv$f0o$
Bonjour,

Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro pour
avoir une temporisation de 40 secondes par exemple.
J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela ne
convient pas et je ne connais pas d'instruction permettant de faire une
temporisation.
Je fais appel à vos compétences pour m'aider.
Merci.




Avatar
Guy DETIENNE
Salut ;O)

Il existe comme l'a proposé Patrice l'API Sleep. Celle-ci crée une
temporisation sans redonner la main au système. C'est à dire qu'il faudra
attendre la fin de la temporisation pour pouvoir continuer à utiliser
l'application. Le programme est donc bloqué.

Selon le cas, nous pourrions avoir besoin d'une temporisation ne bloquant
pas le programme et lui redant la main.

Voici un bout de code. Une simple boucle avec l'instruction DoEvents qui a
le bénéfice de rendre la main au système à chaque passage.

Dim debut As Long
Dim fin As Long

debut = Timer
fin = 5 'secondes

Do While Timer < debut + fin
DoEvents 'pour rendre la main au systeme
Loop

MSgbox "Temporisation terminée"

Guy

"André" a écrit dans le message de
news:dn12bv$f0o$
Bonjour,

Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro pour
avoir une temporisation de 40 secondes par exemple.
J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela ne
convient pas et je ne connais pas d'instruction permettant de faire une
temporisation.
Je fais appel à vos compétences pour m'aider.
Merci.




Avatar
X
Bonjour,

Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas inutile
de passer par cet objet car le programme n'est de facto pas bloqué, plus un
DoEvents...


"André" a écrit dans le message de news:
dn12bv$f0o$
| Bonjour,
|
| Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro pour
| avoir une temporisation de 40 secondes par exemple.
| J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela ne
| convient pas et je ne connais pas d'instruction permettant de faire une
| temporisation.
| Je fais appel à vos compétences pour m'aider.
| Merci.
|
|
Avatar
Guy DETIENNE
Salut ;O)

Le Timer n'a pas du tout l'utilité d'une temporisation....
Son utilité est d'exécuter du code à interval régulier donc à oublier.

Guy


"X" <.> a écrit dans le message de
news:OwFFUIZ%
Bonjour,

Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas inutile
de passer par cet objet car le programme n'est de facto pas bloqué, plus


un
DoEvents...


"André" a écrit dans le message de news:
dn12bv$f0o$
| Bonjour,
|
| Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro pour
| avoir une temporisation de 40 secondes par exemple.
| J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela


ne
| convient pas et je ne connais pas d'instruction permettant de faire une
| temporisation.
| Je fais appel à vos compétences pour m'aider.
| Merci.
|
|




Avatar
X
Oui chef :o)


"Guy DETIENNE" a écrit dans le message de news:
OVBEU0Z%
| Salut ;O)
|
| Le Timer n'a pas du tout l'utilité d'une temporisation....
| Son utilité est d'exécuter du code à interval régulier donc à oublier.
|
| Guy
|
|
| "X" <.> a écrit dans le message de
| news:OwFFUIZ%
| > Bonjour,
| >
| > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
inutile
| > de passer par cet objet car le programme n'est de facto pas bloqué, plus
| un
| > DoEvents...
| >
| >
| > "André" a écrit dans le message de news:
| > dn12bv$f0o$
| > | Bonjour,
| > |
| > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro
pour
| > | avoir une temporisation de 40 secondes par exemple.
| > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela
| ne
| > | convient pas et je ne connais pas d'instruction permettant de faire
une
| > | temporisation.
| > | Je fais appel à vos compétences pour m'aider.
| > | Merci.
| > |
| > |
| >
| >
|
|
Avatar
X
Et dans les ellipses, t'aurais pas quelques connaissances (voir ma
question) ???


"Guy DETIENNE" a écrit dans le message de news:
OVBEU0Z%
| Salut ;O)
|
| Le Timer n'a pas du tout l'utilité d'une temporisation....
| Son utilité est d'exécuter du code à interval régulier donc à oublier.
|
| Guy
|
|
| "X" <.> a écrit dans le message de
| news:OwFFUIZ%
| > Bonjour,
| >
| > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
inutile
| > de passer par cet objet car le programme n'est de facto pas bloqué, plus
| un
| > DoEvents...
| >
| >
| > "André" a écrit dans le message de news:
| > dn12bv$f0o$
| > | Bonjour,
| > |
| > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro
pour
| > | avoir une temporisation de 40 secondes par exemple.
| > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela
| ne
| > | convient pas et je ne connais pas d'instruction permettant de faire
une
| > | temporisation.
| > | Je fais appel à vos compétences pour m'aider.
| > | Merci.
| > |
| > |
| >
| >
|
|
Avatar
Guy DETIENNE
Y a pas de chef ici ;O) Juste dire qu'un Timer n'a pas cette utilité.
Certaines réponses peuvent induire l'utilisateur en erreur le conduisant
vers de fausses pistes.

Pour ce qui est de l'éllipse, aucune idée.

Guy

"X" <.> a écrit dans le message de
news:OZPOE9Z%
Oui chef :o)


"Guy DETIENNE" a écrit dans le message de news:
OVBEU0Z%
| Salut ;O)
|
| Le Timer n'a pas du tout l'utilité d'une temporisation....
| Son utilité est d'exécuter du code à interval régulier donc à oublier.
|
| Guy
|
|
| "X" <.> a écrit dans le message de
| news:OwFFUIZ%
| > Bonjour,
| >
| > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
inutile
| > de passer par cet objet car le programme n'est de facto pas bloqué,


plus
| un
| > DoEvents...
| >
| >
| > "André" a écrit dans le message de news:
| > dn12bv$f0o$
| > | Bonjour,
| > |
| > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro
pour
| > | avoir une temporisation de 40 secondes par exemple.
| > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais


cela
| ne
| > | convient pas et je ne connais pas d'instruction permettant de faire
une
| > | temporisation.
| > | Je fais appel à vos compétences pour m'aider.
| > | Merci.
| > |
| > |
| >
| >
|
|




Avatar
X
Je viens de tester, et c'est bien ce qu'il me semblait, ça bloque, DoEvents
ou pas !!! ... ???

Voici:
' OBJETS label1 + command1
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Form_Activate()
Label1.Visible = False
Label1.Caption = " 5 secondes écoulées"
End Sub
Sub Command1_Click() ' <---BLOQUE !!!
DoEvents
Sleep 5000
Label1.Visible = True
End Sub

Donc, ben le timer = 40000 + timer1.enabled=true + doevents...

As-tu autre chose à proposer qui ne bloque pas ???

:o)


"Guy DETIENNE" a écrit dans le message de news:
OVBEU0Z%
| Salut ;O)
|
| Le Timer n'a pas du tout l'utilité d'une temporisation....
| Son utilité est d'exécuter du code à interval régulier donc à oublier.
|
| Guy
|
|
| "X" <.> a écrit dans le message de
| news:OwFFUIZ%
| > Bonjour,
| >
| > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
inutile
| > de passer par cet objet car le programme n'est de facto pas bloqué, plus
| un
| > DoEvents...
| >
| >
| > "André" a écrit dans le message de news:
| > dn12bv$f0o$
| > | Bonjour,
| > |
| > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro
pour
| > | avoir une temporisation de 40 secondes par exemple.
| > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais cela
| ne
| > | convient pas et je ne connais pas d'instruction permettant de faire
une
| > | temporisation.
| > | Je fais appel à vos compétences pour m'aider.
| > | Merci.
| > |
| > |
| >
| >
|
|
Avatar
X
;o) J'ai testé DoEvents, voir réponse, ça coince !!! = Timer ???


"Guy DETIENNE" a écrit dans le message de news:
O9rdGGa%
|Y a pas de chef ici ;O) Juste dire qu'un Timer n'a pas cette utilité.
| Certaines réponses peuvent induire l'utilisateur en erreur le conduisant
| vers de fausses pistes.
|
| Pour ce qui est de l'éllipse, aucune idée.
|
| Guy
|
| "X" <.> a écrit dans le message de
| news:OZPOE9Z%
| > Oui chef :o)
| >
| >
| > "Guy DETIENNE" a écrit dans le message de news:
| > OVBEU0Z%
| > | Salut ;O)
| > |
| > | Le Timer n'a pas du tout l'utilité d'une temporisation....
| > | Son utilité est d'exécuter du code à interval régulier donc à oublier.
| > |
| > | Guy
| > |
| > |
| > | "X" <.> a écrit dans le message de
| > | news:OwFFUIZ%
| > | > Bonjour,
| > | >
| > | > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
| > inutile
| > | > de passer par cet objet car le programme n'est de facto pas bloqué,
| plus
| > | un
| > | > DoEvents...
| > | >
| > | >
| > | > "André" a écrit dans le message de news:
| > | > dn12bv$f0o$
| > | > | Bonjour,
| > | > |
| > | > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une
macro
| > pour
| > | > | avoir une temporisation de 40 secondes par exemple.
| > | > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais
| cela
| > | ne
| > | > | convient pas et je ne connais pas d'instruction permettant de
faire
| > une
| > | > | temporisation.
| > | > | Je fais appel à vos compétences pour m'aider.
| > | > | Merci.
| > | > |
| > | > |
| > | >
| > | >
| > |
| > |
| >
| >
|
|
Avatar
Guy DETIENNE
Re ;O)

Ben c'est normal !
La ligne de code après ton Sleep 5000 ne sera exécutée qu'après la fin de
celui-ci, cad après 5 secondes.
Quand je disais que Sleep bloque le programme...

Guy



"X" <.> a écrit dans le message de
news:%23LZJrNa%
Je viens de tester, et c'est bien ce qu'il me semblait, ça bloque,


DoEvents
ou pas !!! ... ???

Voici:
' OBJETS label1 + command1
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Form_Activate()
Label1.Visible = False
Label1.Caption = " 5 secondes écoulées"
End Sub
Sub Command1_Click() ' <---BLOQUE !!!
DoEvents
Sleep 5000
Label1.Visible = True
End Sub

Donc, ben le timer = 40000 + timer1.enabled=true + doevents...

As-tu autre chose à proposer qui ne bloque pas ???

:o)


"Guy DETIENNE" a écrit dans le message de news:
OVBEU0Z%
| Salut ;O)
|
| Le Timer n'a pas du tout l'utilité d'une temporisation....
| Son utilité est d'exécuter du code à interval régulier donc à oublier.
|
| Guy
|
|
| "X" <.> a écrit dans le message de
| news:OwFFUIZ%
| > Bonjour,
| >
| > Je ne sais pas si en VBa le Timer existe, si oui, il n'est pas
inutile
| > de passer par cet objet car le programme n'est de facto pas bloqué,


plus
| un
| > DoEvents...
| >
| >
| > "André" a écrit dans le message de news:
| > dn12bv$f0o$
| > | Bonjour,
| > |
| > | Dans un programme écrit en vba 2000 sous xp j'ai besoin d'une macro
pour
| > | avoir une temporisation de 40 secondes par exemple.
| > | J'ai essayé de faire une boucle For i = 1 To 1000000 Next i, mais


cela
| ne
| > | convient pas et je ne connais pas d'instruction permettant de faire
une
| > | temporisation.
| > | Je fais appel à vos compétences pour m'aider.
| > | Merci.
| > |
| > |
| >
| >
|
|




1 2