chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
1 avril 2007 à 13:54
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
3 avril 2007 à 17:50
Bonjour,
Voici la question :
Dans un ormulaire F, j' ai :
Sub cmdOk_Click
....
Unload Me
If MsgBox("...Continuer ",vbyesNo+VbQuestion,"saisie...")=VbYes Then _
PREPARE_SAISIE
End Sub
' PREPARE_SAISIE est une procedure qui initialise mon form pour une
nouvelle saisie, or dans cette Sub on retrouve également :
Load F : F.Show 1
Question : Que se passe t- il avec End Sub ? est- elle executée ou je suis encore dans
cmdOk_Click lors du chargement de F ?
NB: le code fonctionne très bien et il n' y a aucun souci de ce côte-ci.
J' ai souvent procédé ainsi: Tout ce qu' il y' a c' est que je me suis toujours la question sans en faire pour autant un drame.
Aujourd' hui que j' ai un peu de temps libre, j' ai décidé d' en finir avec ça ...
Si vous avez vous aussi un peu de temps libre, et surtout une explication,
j' attend vos réponses.
Merci et bonne journée...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 1 avril 2007 à 14:05
Bonjour chaibat,
Je me suis souvent posé la question également, y compris pour plus grave (fermeture de l' application alors qu'une autre commande était déjà "envoyée")....
Je dirais que tout se passe trop vite pour que la deuxième commande n'ait aucune chance...
Je prends personnellement la porécaution, malgré tout (même si "çà marche"), de ne pas décharger avant d'avoir "envoyé".
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 1 avril 2007 à 14:05
tu es effectivement toujours dans le cmdOk_click, et même plutot dans PREPARE_SAISIE. Pour etre plus precis tu es bloqué sur l'instruction F.Show 1.
Cette instruction affiche la feuille F en modal, c'est à dire toute execution du code autre que celui de cette feuille est suspendu tant que cette feuille ne sera pas fermée.
Donc l'instruction qui suit F.show 1 ne sera executée que lorsque la feuille F sera fermée et donc par conséquent la sortie respective des routines PREPARE_SAISIE et cmdOK_click n'interviendra que lorsque la feuille F sera fermée.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 avril 2007 à 17:36
Peut-être que je comprends mal la question... mais le point d'arrêt sur le End Sub permet de savoir si tu y est arrivé... Si tu réponds Oui à la question, tu te retrouves dans le formulaire, sinon tu devrais te retrouver au point d'arrêt, non ?
Et le Unload Me avant la question devrait logiquement, je pense, se trouver après cette question puisque tu laisses le choix de continuer ou d'arrêter.
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 1 avril 2007 à 15:16
D' abord merci à tous pour vos réponses...
@ Mpi
le point d' arrêt ne te permet pas de savoir si la Sub est terminée ou pas puis
que tu tu entamme PREPARE_SAISIE...
@ Casy
Il n' y as pas de suspension de code.
Le traitement continue comme lors du premier chargement et je peux saisir
une seconde fois et les entrées sont prises en compte.
F est bien rechargée en Modal dand PREPARE_SAISIE...
la question est donc est ce qu' il y' a encore une image d' elle même après
unload.
@jmf,
j' ai pas compris le "...décharger avant d'avoir "envoyé". "
si tu envoies tu ne peux pas exécuter le déchargement puisqu' elle est Modal.
En tout cas merci d' avoir éclairer le sujet.et d' avoir confirmer que le
problème éxiste
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 2 avril 2007 à 04:41
si si MpI , tu as bien fait de proposer le point d' arrêt...
c' est juste que j' ai suivi le raisonnement de casy selon le quel
LE FORMULAIRE étant affiché en modal, cmdOk_Click est bloqué
à ce niveau.
D' autre part, le formulaire doit être déchargé quelque soit la réponse,
et si tu le places après la condition, et si la réponse est oui,
PREPARE_SAISIE bloquera son exécution.En plus il ne sera pas encore
déchargé que tu relances son affichage,puisqu il y' a Load f dans
PREPARE_SAISIE
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 3 avril 2007 à 17:50
Bonjour,
étant donné qu' il a été prouvé que End Sub ne s' éxécutera
que si la réponse au msgbox est non, et de se fait les appels
s' accumulent tant que cette réponse reste oui, j' ai trouvé une
parade pour sortir de ce cycle vicieux :
Sachant que le formulaire F est chargé pour la première
fois à partir d' un autre form M quand on je clisue sur
une commande "Ajouter..." , j' ai mis ceci:
Dans M
Sub Form_Activate()
iF Me.Tag="Saisie active" Then
If MsgBox("...Une autre saisie ",vbYesNo+VbQuestion,"saisie...")=VbYes Then
PREPARE_SAISIE
Else
Me.Tag=""
End If
End If
'sachant bien qu' au départ Me.Tag=""
End Sub
Sub cmdAdd_Click()
Me.Tag="Saisie active"
PREPARE_SAISIE
End Sub
Dans F
Sub cmdOk_Click
<traitement: enregistrement de la saisie>
....
Unload Me
End Sub
F étant en premier plan sur M, quand F se décharge, M s' active
et le msgbox est affiché...