VB attendre lors de l'exécution...

Résolu
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006 - 15 nov. 2005 à 16:52
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006 - 16 nov. 2005 à 09:46
Existe-t-il une fonction toute faite pour attendre pendant "n" sec lors de l'exécution (par exemple pour laisser le temps à un fichier d'être écrit sur le disque) du genre: wait(n) et donc on attend "n" secondes pendant lesquelles il ne se passe rien... Merci!

10 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 nov. 2005 à 17:28
Utilise la fonction de l'API Windows Sleep

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
3
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
16 nov. 2005 à 09:46
Je me réponds à moi-même: il faut déclarer cette API au début du code ainsi:

Private
Declare
Sub
Sleep Lib <VAR>"kernel32"</VAR> (ByVal dwMilliseconds As Long)

...

Merci, vous m'avez mis sur le bon chemin!
3
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
15 nov. 2005 à 17:29
sleep ne stope pas tout le programme?

il ne peut pas s inspirer de ca plutot?
http://www.vbfrance.com/forum.v2.aspx?ID=600214#6
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 nov. 2005 à 17:36
Ben si, sleep fait une pause dans le programme, mais c'est pas ce qu'il demande ?



Si son but, c'est d'attendre qu'un fichier soit copié, ca peut fonctionner et sera bien plus optimisé qu'une boucle While !



Quand au lien que tu donne, je vois pas le rapport !

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
15 nov. 2005 à 17:48
pour moi ca question c'était plus l'attente d'une exécution d'un traitement dans programme.si c'est le cas,un sleep vas bloquer tout son programme, faux?
dans ce cas, il cache la feuille sur laquelle il était avant de lancer son traitement, met un frm vierge avec un label "patientez" et réaffiche sa feuille quand son traitement est terminé.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 nov. 2005 à 18:01
trabice : si la copie est synchrone (donc bloque le programme tant
qu'elle n'est pas finie), pas besoin de faire un sleep : il se fait
tout seul.

Si la copie est asynchrone, et que tu ne veux rien éxécuter tant que la
copie n'est pas finie, ta méthode ne suffit pas : elle ne bloquera pas
l'éxécution du reste de la macro, elle ne fera qu'afficher une feuille
=> ce n'est pas la solution !



Un sleep reste, je pense, la meilleure solution : tu fait une boucle :



while (fichier non copié)

Sleep 1000

Wend


Ainsi, tu n'occupe pas 100 % du processeur durant la copie, ce qui est le cas avec une simple boucle

while (fichier non copié)


DoEvents


Wend



J'utilise ce genre de code depuis des années, et ca marche à merveille !

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
15 nov. 2005 à 18:08
j'ai pas dis que tu avais tord :-)
je testerai
while (fichier non copié)
Sleep 1000
Wend

:-)

bon ben normalement c'est réponse acceptée pour toi ca.

bon prog
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
15 nov. 2005 à 21:37
lol je pensais pas avoir tant de réponses! Je testerai demain mais pour éclaircir ma question, en gros, ce que je voudrais c'est qu'entre l'instruction i et l'instruction i+1, il se passe un nombre donnée de secondes que le prog est le temps de faire ceci ou cela (ex comme je le disais écrire dans un fichier parce que l'instruction d'après va lire dans ce fichier)...

Merci à vous! (j'accepte la réponse de "Dark" mais merci à vous tous)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
16 nov. 2005 à 00:56
Une ecriture dans un fichier est synchrone ! Donc si tu écris dans un fichier à l'instruction i, c'est dispo à l'instruction i+1 !!
Du moins si l'écriture se fait bien via des fonctions VB !
Si to "ecriture de fichier" se fait via un Shell() sur une commande redirigé, alors je te conseillerais plutot :
1- Soit d'opter pour une autre méthode que le shell() : API par exemple ?! Tout dépend de ce que tu veux faire au final
2- soit d'opter pour une version synchrone du shell() : voir mes souces.

CR
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
16 nov. 2005 à 09:20
Ouep... J'ai testé ce matin... "Sleep", ça sort d'où?!? Parce qu'il croît que c'est une fonction et donc elle est pas définie...
Et pour éclaircir encore ma question qui est vraiment simple en fin de compte... Je veux juste faire une temporisation d'une durée donnée à un endroit donnée...
Ex:
instruction i
'attendre "s" secondes
instruction i+1

Merci d'avance!
0
Rejoignez-nous