Attente d'un évènement par Doevents

cs_jppompon Messages postés 23 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 24 avril 2005 - 5 mars 2004 à 18:31
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 23 avril 2004 à 17:02
Grace à l'aide reçue par le forum, j'ai pu insérer dans un programme l'attente d'un évènement extérieur, et analyser la réponse. Exemple ci-dessous.

' boucle d'attente
Check1.Value = False
Check2.Value = False
While (Check1.Value <> vbChecked) And (Check2.Value <> vbChecked)
DoEvents
Wend
' Puis analyse
If Check1.Value = vbChecked Then..........

Check1 et Check2 sont des checkbox et ça marche très bien!

Mais j'aurai préférer mettre des boutons plutôt que des checkbox et là ça ne marche pas car le programme s'arrête, il n'y a pas de retour après le "Wend"
Est-ce normal ou bien existe t'il une solution que je n'ai pas découverte?

JPP

AZot

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mars 2004 à 19:16
Salut jppompon
A mon avis, tu t'y prends mal :
Les boutons ont leurs propres évenements comme Command1_Click ...
Il suffit de mettre le code que tu veux exécuter dedans et le tour est joué. Pas la peine d'attendre avec une boucle

Vala
Jack
0
cs_jppompon Messages postés 23 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 24 avril 2005
5 mars 2004 à 21:02
Merci Jack. J'y avais évidemment pensé mais cela disperse et multiplie les petits morceaux de programme et au total la longueur.
Ce qui est difficile à gérer lorsque le programme prend de l'ampleur et qu'il faut le maintenir.
En tout cas si je comprends bien ta réponse cela n'est pas possible ??

JPP

AZot
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 mars 2004 à 21:53
Pour arreter uen boucle avec un bouton c'est facile :
1- Tu ajoutes une variable "ArretBoucle As Boolean" à ta feuille.
2- Juste avant le début de la boucle (jsute avant le While), tu la force à False "ArretBoucle = False"
3- Dans ta condition de While tu met "While Not ArretBoucle"
4- Dans l'EVT click de ton bouton tu mets "ArretBoucle = True"
5- C'est tout !!!!!

Christophe R.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 mars 2004 à 21:57
.. Mais jack a raison, pourquoi ne pas mettre ton code dans les evt Click des boutons !! JE ne comprend ton argument de "dispersion de code" !!!!

Christophe R.
0

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

Posez votre question
cs_jppompon Messages postés 23 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 24 avril 2005
7 mars 2004 à 12:06
C'est vrai je suis peut être un peu trop "procédural". Ca c'est les vieux restes du Fortran et du Pascal.
Je m'explique. Cette procedure permet d'attendre un évènement pour continuer, les évènements pouvant être différents. Après analyse de l'événement on peut continuer dans la même SUB sans être obligé de transferer le code dans plusieurs SUB correspondant aux différents évènements.
Bien sûr on peut aussi faire en sorte que les différents évènements retournent vers une nouvelle Sub, et là je dis que l'on se disperse, ce qui diminue la lisibilité du Programme.
Autre point comment faire pour utiliser le même évenement à différents endroit du programme ?
Si les boutons marchaient, cela serait bien par exemple d'utiliser le même bouton "Suprimer" à différents endroits du programme.
Si vous êtes arrivés au bout du message c'est que le vieux n'a pas été trop rasoir.
Merci à tous de discuter.
JPP
AZot
0
cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 4
23 avril 2004 à 16:47
Salut

Moi je souhaiterai traiter un evenement "reception sur MSComm" alors que je suis en attente d'un clic sur une msgBox.
en gros je reçois des infos en permanence et lors de l'ouverture d'une msgbox, l'evt reception n'est plus traiter tant que j'ai pas répondu à la msgbox : qq a t il une idée pour que malgré l'attente de la réponse au msgbox, je continue de recevoir sur Mscom

Merci
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 avril 2004 à 17:02
n'utilise pas une msgbox mais fabrique une messagebox a partir d'une form classique que tu ouvres en non-modale

Christophe R.
0
Rejoignez-nous