OVH Cloud OVH Cloud

Fermer tous le formulaire sauf un

8 réponses
Avatar
Olivier
Bonjour,
J'aimerai savoir comment modifier ce code pour q'un=20
formulaire reste ouvert:

Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then DoCmd.Close acForm, Frm.Name
Next Frm
FormsClose =3D True

Merci pour votre aide pr=E9cieuse.
Olivier

8 réponses

Avatar
Raymond [mvp]
Bonjour.

Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then
If frm.name <> Me.Name Then
DoCmd.Close acForm, Frm.Name
End If
End If
Next Frm

Me.Name est un exemple, ce peut être une variable ou un littéral.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit dans le message de
news: 132401c52ae7$cc116070$
Bonjour,
J'aimerai savoir comment modifier ce code pour q'un
formulaire reste ouvert:

Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then DoCmd.Close acForm, Frm.Name
Next Frm
FormsClose = True

Merci pour votre aide précieuse.
Olivier
Avatar
Olivier
Bonjour Raymond,
Pourrais-tu me dire où mettre dans ta formule, le nom du
formulaire qui doit rester ouvert.
Je te donne un exemple:
depuis le Form1 j'ouvre un 2ème formulaire en laissant le
1er ouvert, depuis ce 2ème formulaire j'ouvre un 3ème en
laissant ouvert le 2ème et ainsi de suite pour des raisons
de consulatation.
Arrivé à un formulaire que je nome 'x' je peux refermer
tous les formulaires sauf le 1er nommé Form1.
Je veux donc mettre un bouton sur le formulaire 'X' me
fermant tous les formulaire y compris le formulaire 'X'
lui-même, mais pas le formulaire nomé Form1.
Olivier
-----Message d'origine-----
Bonjour.

Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then
If frm.name <> Me.Name Then
DoCmd.Close acForm, Frm.Name
End If
End If
Next Frm

Me.Name est un exemple, ce peut être une variable ou un
littéral.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit
dans le message de

news: 132401c52ae7$cc116070$
Bonjour,
J'aimerai savoir comment modifier ce code pour q'un
formulaire reste ouvert:

Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then DoCmd.Close acForm, Frm.Name
Next Frm
FormsClose = True

Merci pour votre aide précieuse.
Olivier


.



Avatar
Raymond [mvp]
Il ne faut pas mettre la procédure dans le formulaire x car si le formulaire
x se ferme la procédure sera terminée sans avoir fermé tous les autres.
tu mets la procédure dans un module standard:
Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then
If frm.name <> "Form1" Then
DoCmd.Close acForm, Frm.Name
End If
End If
Next Frm
Forms!form1.SetFocus

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit dans le message de
news: 136301c52af1$b6324580$
Bonjour Raymond,
Pourrais-tu me dire où mettre dans ta formule, le nom du
formulaire qui doit rester ouvert.
Je te donne un exemple:
depuis le Form1 j'ouvre un 2ème formulaire en laissant le
1er ouvert, depuis ce 2ème formulaire j'ouvre un 3ème en
laissant ouvert le 2ème et ainsi de suite pour des raisons
de consulatation.
Arrivé à un formulaire que je nome 'x' je peux refermer
tous les formulaires sauf le 1er nommé Form1.
Je veux donc mettre un bouton sur le formulaire 'X' me
fermant tous les formulaire y compris le formulaire 'X'
lui-même, mais pas le formulaire nomé Form1.
Olivier
Avatar
Olivier
rebonjour,
Oui, là ça marche, méthode un peu lente, car il va ouvrir
tous les formulaires ouverts les uns après les autres pour
les fermer, mais ça marche.
Merci.
Olivier
-----Message d'origine-----
Il ne faut pas mettre la procédure dans le formulaire x
car si le formulaire

x se ferme la procédure sera terminée sans avoir fermé
tous les autres.

tu mets la procédure dans un module standard:
Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then
If frm.name <> "Form1" Then
DoCmd.Close acForm, Frm.Name
End If
End If
Next Frm
Forms!form1.SetFocus

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit
dans le message de

news: 136301c52af1$b6324580$
Bonjour Raymond,
Pourrais-tu me dire où mettre dans ta formule, le nom du
formulaire qui doit rester ouvert.
Je te donne un exemple:
depuis le Form1 j'ouvre un 2ème formulaire en laissant le
1er ouvert, depuis ce 2ème formulaire j'ouvre un 3ème en
laissant ouvert le 2ème et ainsi de suite pour des raisons
de consulatation.
Arrivé à un formulaire que je nome 'x' je peux refermer
tous les formulaires sauf le 1er nommé Form1.
Je veux donc mettre un bouton sur le formulaire 'X' me
fermant tous les formulaire y compris le formulaire 'X'
lui-même, mais pas le formulaire nomé Form1.
Olivier



.



Avatar
Raymond [mvp]
Si tu veux faire un sprint:

On Error GoTo exit_sub
Do
DoCmd.Close acForm, Forms(0).Name
Loop
exit_sub:
DoCmd.OpenForm "form1"


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit dans le message de
news: 13b301c52af5$fe4b29a0$
rebonjour,
Oui, là ça marche, méthode un peu lente, car il va ouvrir
tous les formulaires ouverts les uns après les autres pour
les fermer, mais ça marche.
Merci.
Olivier
Avatar
Olivier
Rebonjour,
Effectivement cette méthode est hyper-rapide.
Mais est-elle aussi stable que la première?
Olivier
-----Message d'origine-----
Si tu veux faire un sprint:

On Error GoTo exit_sub
Do
DoCmd.Close acForm, Forms(0).Name
Loop
exit_sub:
DoCmd.OpenForm "form1"


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit
dans le message de

news: 13b301c52af5$fe4b29a0$
rebonjour,
Oui, là ça marche, méthode un peu lente, car il va ouvrir
tous les formulaires ouverts les uns après les autres pour
les fermer, mais ça marche.
Merci.
Olivier



.



Avatar
Raymond [mvp]
à mon avis elle est moins stable, mais si tu rajoutes un doevents dans la
boucle ça devrait faire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit dans le message de
news: 016d01c52afd$13a155c0$
Rebonjour,
Effectivement cette méthode est hyper-rapide.
Mais est-elle aussi stable que la première?
Olivier
Avatar
Olivier
Merci pour tout.
Olivier
-----Message d'origine-----
à mon avis elle est moins stable, mais si tu rajoutes un
doevents dans la

boucle ça devrait faire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Olivier" a écrit
dans le message de

news: 016d01c52afd$13a155c0$
Rebonjour,
Effectivement cette méthode est hyper-rapide.
Mais est-elle aussi stable que la première?
Olivier


.