[VBA] Reprendre l'execution du code à la fermeture d'un form
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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 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