Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Reprendre l'execution du code à la fermeture d'un form

2 réponses
Avatar
Tonic
Bonjour à tous,
Voici ma question :

J'ai un formulaire [Form1] à partir duquel j'ouvre un deuxième formulaire
[Form2].
Le formulaire Form2 modifie des données sur les tables de ma base, aussi à
la fermeture de celui-ci j'aimerai pouvoir executer une fonction "rafraichir"
(que j'ai déjà créée dans un module) sur le Form1.

Le problème est donc de suspendre l'execution du code dans le form1 pendant
que le form2 est ouvert puis de reprendre l'execution du code dans le form1 à
la fermeture de form2.

Grace à la fonction Syscmd je peux connaitre l'etat d'un objet (ouvert ou
fermé) et grace à l'utlisation d'un doevents l'opération devrait etre
possible mais je n'y arrive pas....
Voici le code qui lance l'ouverture du form2 à partir du form1:

Public Sub ouvre_form2()
Application.DoCmd.OpenForm "AD_test", , , , , , Me.[Sel_PCF]
'La suite ne fonctionne pas comme je le desirerai car le code s'enchaine
sans interuption
DoEvents 'J'aimerai pouvoir interrompre le code ici
If ObjStatus=False Then 'cette fonction me dit si le form2 est ouvert ou non
Call Rafaichir()
Endif
EndSub

Merci d'avance pour vos réponses,
Tonic

2 réponses

Avatar
pgz
Bonjour,

Si j'ai bien compris ton pb est de 'suspendre' l'exécution du code dans
form1 à l'ouverture de form2. Il y a un moyen simple de faire cela :
dans la métode 'openform' tu prends pour argument(acWindowMode) = acDialog.

Form2 s'ouvrira dans une fenêtre réduite, dont la taille se règle de façon
particulière. Sino, ca devrait faire ce que tu attends. Le code du form1
reprendra à la fermeture de form2, sur la ligne après
DOCmd.OpenForm "..., , , , acDialog

Bonne chane,
pgz


Bonjour à tous,
Voici ma question :

J'ai un formulaire [Form1] à partir duquel j'ouvre un deuxième formulaire
[Form2].
Le formulaire Form2 modifie des données sur les tables de ma base, aussi à
la fermeture de celui-ci j'aimerai pouvoir executer une fonction "rafraichir"
(que j'ai déjà créée dans un module) sur le Form1.

Le problème est donc de suspendre l'execution du code dans le form1 pendant
que le form2 est ouvert puis de reprendre l'execution du code dans le form1 à
la fermeture de form2.

Grace à la fonction Syscmd je peux connaitre l'etat d'un objet (ouvert ou
fermé) et grace à l'utlisation d'un doevents l'opération devrait etre
possible mais je n'y arrive pas....
Voici le code qui lance l'ouverture du form2 à partir du form1:

Public Sub ouvre_form2()
Application.DoCmd.OpenForm "AD_test", , , , , , Me.[Sel_PCF]
'La suite ne fonctionne pas comme je le desirerai car le code s'enchaine
sans interuption
DoEvents 'J'aimerai pouvoir interrompre le code ici
If ObjStatusúlse Then 'cette fonction me dit si le form2 est ouvert ou non
Call Rafaichir()
Endif
EndSub

Merci d'avance pour vos réponses,
Tonic


Avatar
Tonic
Merci pour tout pgz cela fonctionne a merveille!!
A bientot,
Tonic


Bonjour,

Si j'ai bien compris ton pb est de 'suspendre' l'exécution du code dans
form1 à l'ouverture de form2. Il y a un moyen simple de faire cela :
dans la métode 'openform' tu prends pour argument(acWindowMode) = acDialog.

Form2 s'ouvrira dans une fenêtre réduite, dont la taille se règle de façon
particulière. Sino, ca devrait faire ce que tu attends. Le code du form1
reprendra à la fermeture de form2, sur la ligne après
DOCmd.OpenForm "..., , , , acDialog

Bonne chane,
pgz


Bonjour à tous,
Voici ma question :

J'ai un formulaire [Form1] à partir duquel j'ouvre un deuxième formulaire
[Form2].
Le formulaire Form2 modifie des données sur les tables de ma base, aussi à
la fermeture de celui-ci j'aimerai pouvoir executer une fonction "rafraichir"
(que j'ai déjà créée dans un module) sur le Form1.

Le problème est donc de suspendre l'execution du code dans le form1 pendant
que le form2 est ouvert puis de reprendre l'execution du code dans le form1 à
la fermeture de form2.

Grace à la fonction Syscmd je peux connaitre l'etat d'un objet (ouvert ou
fermé) et grace à l'utlisation d'un doevents l'opération devrait etre
possible mais je n'y arrive pas....
Voici le code qui lance l'ouverture du form2 à partir du form1:

Public Sub ouvre_form2()
Application.DoCmd.OpenForm "AD_test", , , , , , Me.[Sel_PCF]
'La suite ne fonctionne pas comme je le desirerai car le code s'enchaine
sans interuption
DoEvents 'J'aimerai pouvoir interrompre le code ici
If ObjStatusúlse Then 'cette fonction me dit si le form2 est ouvert ou non
Call Rafaichir()
Endif
EndSub

Merci d'avance pour vos réponses,
Tonic