Attente d'une reponse d'une form

cs_math67 Messages postés 5 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 2 juin 2004 - 1 juin 2004 à 10:47
Zigarn Messages postés 106 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 janvier 2005 - 13 août 2004 à 16:27
Bonjour, je débute en VB. ma question :

j'ai une boucle while dans uen sub qui effectue une comparaison entre une cellule d'uen table excel et une feuille d'une autre, pour en extraire certaines info. Bref. dans ma boucle j'affiche une form a un moment donné pour optenir confirmation de l'utilisateur et lui demander s'il veut utilisé les infos de la cellue trouvée. Mon problème, est que le programme semble continuer par derreiere et redemarrer... initialitation etc...

cf mon code.
sub ()
declaration...
initialisation...

while
cherche cellule
si cellule trouvée
affiche form
si utilisateur dit "ok" alors effectue les modif
sinon passe a la suite
wend

End Sub

j'ai ajouté un debug.print

....
debug.print("debut form")
affiche form
debug.print("fin de la form")

et j'obtiens pas debut form et fin de la form, mais les debug print com si j'avais relancé le programme.. c'est pas clair je sais mais le problème est chelou ??

normalement le programme se fige kan on ffé apparaitre une form ?? y a une manip a faire ? par ce k'en fait j'attends la reponse de l'utilisateur, elle conditionne la suite de mon prog:) ( j'veux eviter les boucles d'attentes.. )

merci bicoup !!

en C il existe les "return" pr les fonctions, ca serait une solution si c t applicable:) pr une form genre form retourne la valeur choix utilisateur

bon allé :d j'vous ecoute :d et m'grondé pas si c pas clair :d

2 réponses

louisvbfrance Messages postés 31 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 12 mars 2009
27 juil. 2004 à 02:06
Salut,

Je recherche également la solution...pas moyen de trouver

En attendant, j'ai un moyen : le "Doevents"

Le Doevents dit à l'ordinateur SI tu as d'autres trucs à faire plus urgents, fait les, moi j'attend"

********************

Réponse=""

Ouvrir_ta_form qui modifie la variable Réponse.

do while Réponse=""
do events
loop

Continue...

Julien :)
0
Zigarn Messages postés 106 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 janvier 2005
13 août 2004 à 16:27
Une solution : le mode modal ! Tu ouvres ta form en faisant
form.show vbModal

et ton programme devrait du coup attendre la fermeture de ta form pour poursuivre.

Par exemple avec 2 form 1 & 2 ayant chacune un bouton command1 :

pour la form1 :

Private Sub Command1_Click()
  For i = 1 To 10
    Form2.Caption = i
    Form2.Show vbModal
  Next i
End Sub


et pour la 2 :

Private Sub Command1_Click()
  Unload Me
End Sub


et tu verras sans le vbModal : ca change tout !

Par contre je sais pas comment tu peux faire pour récupérer le bouton qui a été frappé (sauf si c'est une MsgBox ou InputBox mais elles sont modales par défaut !). Peut-être avec une variable globale ...

Débutant ... mais pas pour longtemps !
0
Rejoignez-nous