Faire une pause dans un programme

Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012 - 29 nov. 2009 à 19:40
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 29 nov. 2009 à 20:47
Bonsoir,
j'aimerais connaitre les différents moyen de faire une pause dans un programme. Je m'explique.

L'utilisateur saisie une donnée dans une textbox placé sur une feuille excel. La validation se fait automatiquement par la détection de l'appuie de la touche entrée.
Ensuite, je calcule le nombre de lettre pour m'assurer de la validité du numéro rentré par l'utilisateur. VIens ensuite ceci :

En tout début :

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dans le programme :

If NbrLettre < 10 Or NbrLettre > 14 Then
MsgBox ("Le numéro rentrer ne correspond pas à un numéro correct!")
Exit Sub
Else:
TextBox1.Value = "Vérif. OK"
Sleep (1000)
TextBox1.Value = ""
End If


Seulement lors de l'éxécution du programme, je ne vois jamais apparaitre "Vérif. OK". Es que ça viendrait de la fonction sleep ?

Merci

4 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
29 nov. 2009 à 19:53
Salut :


TextBox1.Value = "Vérif. OK"
textbox1.setfocus ' pour la cas où
doevents ' kif kif
Sleep (1000)
TextBox1.Value = ""
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
29 nov. 2009 à 20:00
Ah oui ... VBA ...
Alors pas de setfocus, mais Enter

Mais tu devrais t'intéresser de plus près à l'évènement BeforeUpdate et à son paramètre Cancel ... ===>>> c'est là que réside ta véritable solution !

Et puis : pourquoi utiliser la fonction sleep de l'Api de Windows alors que VBA dispose de la méthode Application.Wait ?
0
Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012
29 nov. 2009 à 20:35
Salut!
Merci pour ta réponse. J'ai utiliser finalement Aplication.wait mais sais tu si l'on peut faire moins d'une seconde d'attente ?

Merci
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
29 nov. 2009 à 20:47
Euh...
Et pourquoi n'utilises-tu alors pas tout bêtement la fonction Timer et DoEvents en boucle, tant que, par exemple (si deb est le relevé du timer avant la boucle), poucler jusqu'à ce que Timer >= deb + une_durée (que tu peux exprimer en fraction de seconde, contrairement à ce que l'on pense généralement) ...
0
Rejoignez-nous