Bonjour, je voudrais savoir comment écrire en vba ceci :
If le formulaire "Client" est ouvert Then Le fermer.
Merci d'avance pour votre aide.
Bonjour, je voudrais savoir comment écrire en vba ceci :
If le formulaire "Client" est ouvert Then Le fermer.
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Sub FormulaireFerme(pStr_NomFormAFermer As String) On Error GoTo Erreur DoCmd.Close acForm, pStr_NomFormAFermer Erreur: End Sub
Cela ne fonctionne pas j'ai une erreur : argument non facultatif.
N'est-ce pas possible de faire cela avec une structure If Then ?
Bonjour.
j'ai tenté d'adapter (pomper sans vergogne) le code issu de ce post :
http://www.developpez.net/forums/d11...ution-code-vb/
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Sub SiFormOuvertAlorsLeFermer(NomDuFormulaireàVérifier As String) Dim i As Integer For i = 0 To Forms.Count - 1 If Forms(i).FormName = NomDuFormulaireàVérifier Then DoCmd.Close acForm, NomDuFormulaireàVérifier Exit Sub End If Next End Sub
Tu as appeler la sub de la façon suivante ?
GillesDeVuif : des accents dans le code !
Code : Sélectionner tout - Visualiser dans une fenêtre à part FormulaireFerme "NomDuFormulaireClient"
Bonsoir,
Ferme le formulaire s'il est ouvert, et ne fait rien s'il ne l'est pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.Close acForm, "Client"
En conséquence, je pense qu'il est inutile de tester si un formulaire est ouvert avant de le fermer.
A+
Bonjour.
Mat08 a écrit
"If le formulaire "Client" est ouvert Then Le fermer."
Je me demande s'il n'y a pas erreur de terme : ne voulez vous pas dire "Si le formulaire est actif"?
Car je ne vois pas l'intérêt de vouloir fermer un formulaire qui ne serait pas ouvert...
Pierre
Bonjour je vais m'expliquer plus clairement.
J'ai deux cas possible et c'est pour ça que je pose cette question.
Cas 1 : j'ai un formulaire 1, je clique sur un bouton qui ouvre un formulaire 2, je clique sur un bouton qui ouvre un formulaire 3 dont certain champs se remplissent par rapport au formulaire 2. Quand je clique sur le bouton du fomulaire 2 celui-ci se ferme.
Aucun problème dans ce cas.
Cas 2 :j'ai un formulaire 1, je clique sur un bouton qui ouvre un formulaire 2 bis, je clique sur un bouton qui ouvre un formulaire 2, je clique sur un bouton qui ouvre un formulaire 3 dont certain champs se remplissent par rapport au formulaire 2 et au formulaire 2 bis. Quand je clique sur le bouton du formulaire 2, celui-ci ainsi que le formulaire 2 bis doivent se fermer.
Vous comprendrez donc qu'ici il y a un problème.
Je ne peux pas mettre dans le code du formulaire 2 une commande qui ferme le formulaire 2 bis car quand celui-ci n'est pas actif j'obtient une erreur, ce qui est normal.
Voilà pourquoi j'ai pensé à une structure If Then.
Si vous répondez svp répondez précisemment à la question.
Je rajoute une précision : ce morceaux de code doit s'intégrer dans une sub déja existante.
Merci d'avance pour votre aide.
Bonjour.
Je tente de comprendre en quoi les réponses apportées ici te semblent imprécises, et en quoi les bouts de code proposés ne sont pas exploitables au sein d'une sub ...
Essayes avec le post de Stigma sur le fil suivant :
http://www.developpez.net/forums/d49...ulaire-ouvert/
Si tu ne t'en sors pas avec çà ...
Cordialement.
Bonjour,
Si tu veux vraiment tester si un formulaire est ouvert, tu peux utiliser une fonction :
A utiliser comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Function Est_Ouvert(ArgNomForm As String) As Boolean On Error Goto ErrEO ' Dim frm As Form ' Set frm = Forms(ArgNomForm) Est_Ouvert = True Set frm = Nothing Exit Function ErrEO: Est_Ouvert = False Set frm = Nothing Exit Function End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If Est_Ouvert(NomDuFormulaire) Then ... Else ... End If
Cela consiste à empêcher l'utilisateur de cliquer en dehors du formulaire tant que celui-ci est ouvert :
http://access.developpez.com/faq/?pa...rm#EmpClickExt
Tu t'assures ainsi que tes autres formulaires ne seront pas fermés...
Tu vois l'idée ?
Oui je vois mais ce n'est pas ce qui me convient.
J'ai trouvé la solution avec une fonction qui vérifie si le formulaire est ouvert :
Puis j'utilise la structure IF THEN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Public Function IsLoaded(ByVal chNomForm As String) As Boolean '--------------------------- Renvoie Vrai si le formulaire spécifié est chargé. Const conModeCréation = 0 Const conEtatObjFermé = 0 IsLoaded = False If SysCmd(acSysCmdGetObjectState, acForm, chNomForm) <> conEtatObjFermé Then If Forms(chNomForm).CurrentView <> conModeCréation Then IsLoaded = True End If End Function
Merci à tous de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If IsLoaded("Formulaire") Then DoCmd.Close acForm, "Formulaire"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager