Tester si un formulaire est ouvert et refresh

Le
s.jean
Bonjour,

J'ai un formulaire frmFournisseurs, que je peux ouvrir soit
directement dans mon menu soit via un bouton sur le formulaire
frmVirement.

Ce formulaire frmVirement contient des sous-formulaires avec des
listes déroulantes, dont les données se trouvent dans frmFournisseurs.

Lorsque j'ouvre frmFournisseurs à partir de frmVirement je souhaite
qu'il mette à jour frmVirement lorsque je le ferme et que je me
retrouve sur frmVirement.

J'ai donc utilisé cette fonction :


Function fIsLoaded(strFormName As String) As Boolean
Dim ObjAcc As AccessObject
Set ObjAcc = CurrentProject.AllForms(strFormName)
If ObjAcc.IsLoaded Then
If ObjAcc.CurrentView <> acCurViewDesign Then
fIsLoaded = True
End If
End If
End Function

Le code que j'ai utilisé dans frmFournisseurs est celui-ci :



Private Sub Form_Close()
stDocName = "frmVirement"

If fIsLoaded(stDocName) = 0 Then

Forms(stDocName)!cmbBeneficiaire.Requery
Forms(stDocName)!cmbFournisseur.Requery
Forms(stDocName)!cmbFournisseurBanque.Requery
Forms(stDocName)!frmFournisseursBanques.Requery
Forms(stDocName)!frmFournisseursBeneficiaires.Requery
End If

End Sub

Mais si mon formulaire frmVirement est fermé il m'affiche un message,
que le formulaire frmVirement est introuvable (forcément il est fermé
justement !) et me surligne la 1ère ligne Form(stDocName) en
débogage.

Comment arranger cela ?

merci beaucoup

Sandrine
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dragan
Le #17916601
Bonjour,
le problème vient du test sur le retour de la fonction :
<If fIsLoaded(stDocName) = 0 Then>
A noter que sous VBA :
TRUE = -1
FALSE=0
tu as écrit : si le formulaire est fermé alors




"s.jean" a écrit :

Bonjour,

J'ai un formulaire frmFournisseurs, que je peux ouvrir soit
directement dans mon menu soit via un bouton sur le formulaire
frmVirement.

Ce formulaire frmVirement contient des sous-formulaires avec des
listes déroulantes, dont les données se trouvent dans frmFournisseurs.

Lorsque j'ouvre frmFournisseurs à partir de frmVirement je souhaite
qu'il mette à jour frmVirement lorsque je le ferme et que je me
retrouve sur frmVirement.

J'ai donc utilisé cette fonction :


Function fIsLoaded(strFormName As String) As Boolean
Dim ObjAcc As AccessObject
Set ObjAcc = CurrentProject.AllForms(strFormName)
If ObjAcc.IsLoaded Then
If ObjAcc.CurrentView <> acCurViewDesign Then
fIsLoaded = True
End If
End If
End Function

Le code que j'ai utilisé dans frmFournisseurs est celui-ci :



Private Sub Form_Close()
stDocName = "frmVirement"

If fIsLoaded(stDocName) = 0 Then

Forms(stDocName)!cmbBeneficiaire.Requery
Forms(stDocName)!cmbFournisseur.Requery
Forms(stDocName)!cmbFournisseurBanque.Requery
Forms(stDocName)!frmFournisseursBanques.Requery
Forms(stDocName)!frmFournisseursBeneficiaires.Requery
End If

End Sub

Mais si mon formulaire frmVirement est fermé il m'affiche un message,
que le formulaire frmVirement est introuvable (forcément il est fermé
justement !) et me surligne la 1ère ligne Form(stDocName) ... en
débogage.

Comment arranger cela ?

merci beaucoup

Sandrine



Fabien
Le #17916591
s.jean a écrit :
Bonjour,

J'ai un formulaire frmFournisseurs, que je peux ouvrir soit
directement dans mon menu soit via un bouton sur le formulaire
frmVirement.

Ce formulaire frmVirement contient des sous-formulaires avec des
listes déroulantes, dont les données se trouvent dans frmFournisseurs.

Lorsque j'ouvre frmFournisseurs à partir de frmVirement je souhaite
qu'il mette à jour frmVirement lorsque je le ferme et que je me
retrouve sur frmVirement.

J'ai donc utilisé cette fonction :


Function fIsLoaded(strFormName As String) As Boolean
Dim ObjAcc As AccessObject
Set ObjAcc = CurrentProject.AllForms(strFormName)
If ObjAcc.IsLoaded Then
If ObjAcc.CurrentView <> acCurViewDesign Then
fIsLoaded = True
End If
End If
End Function

Le code que j'ai utilisé dans frmFournisseurs est celui-ci :



Private Sub Form_Close()
stDocName = "frmVirement"

If fIsLoaded(stDocName) = 0 Then

Forms(stDocName)!cmbBeneficiaire.Requery
Forms(stDocName)!cmbFournisseur.Requery
Forms(stDocName)!cmbFournisseurBanque.Requery
Forms(stDocName)!frmFournisseursBanques.Requery
Forms(stDocName)!frmFournisseursBeneficiaires.Requery
End If

End Sub

Mais si mon formulaire frmVirement est fermé il m'affiche un message,
que le formulaire frmVirement est introuvable (forcément il est fermé
justement !) et me surligne la 1ère ligne Form(stDocName) ... en
débogage.

Comment arranger cela ?

merci beaucoup

Sandrine


Salut,
J'ai une autre version pour tester si un formulaire est chargé ou pas

Function EstChargé(ByVal strNomForm As String) As Boolean
' Retourne Vrai si le formulaire spécifié est ouvert
' en mode Création ou en mode Feuille de données.
Const conÉtatObjFermé = 0
Const conModeCréation = 0
If SysCmd(acSysCmdGetObjectState, acForm, strNomForm) <>
conÉtatObjFermé Then
If Forms(strNomForm).CurrentView <> conModeCréation Then
EstChargé = True
End If
End If
End Function
@+
s.jean
Le #17916721
Merci !

J'ai remplacé 0 par -1 et ça marche impeccable !

Sandrine

On 21 nov, 16:06, Dragan
Bonjour,
le problème vient du test sur le retour de la fonction :
 <If fIsLoaded(stDocName) = 0 Then>
A noter que sous VBA :
 TRUE = -1
 FALSE=0
tu as écrit : si le formulaire est fermé alors

"s.jean" a écrit :



> Bonjour,

> J'ai un formulaire frmFournisseurs, que je peux ouvrir soit
> directement dans mon menu soit via un bouton sur le formulaire
> frmVirement.

> Ce formulaire frmVirement contient des sous-formulaires avec des
> listes déroulantes, dont les données se trouvent dans frmFournisseu rs.

> Lorsque j'ouvre frmFournisseurs à partir de frmVirement je souhaite
> qu'il mette à jour frmVirement lorsque je le ferme et que je me
> retrouve sur frmVirement.

> J'ai donc utilisé cette fonction :

> Function fIsLoaded(strFormName As String) As Boolean
>     Dim ObjAcc As AccessObject
>     Set ObjAcc = CurrentProject.AllForms(strFormName)
>     If ObjAcc.IsLoaded Then
>         If ObjAcc.CurrentView <> acCurViewDesign Then
>             fIsLoaded = True
>         End If
>     End If
> End Function

> Le code que j'ai utilisé dans frmFournisseurs est celui-ci :

> Private Sub Form_Close()
> stDocName = "frmVirement"

> If fIsLoaded(stDocName) = 0 Then

> Forms(stDocName)!cmbBeneficiaire.Requery
> Forms(stDocName)!cmbFournisseur.Requery
> Forms(stDocName)!cmbFournisseurBanque.Requery
> Forms(stDocName)!frmFournisseursBanques.Requery
> Forms(stDocName)!frmFournisseursBeneficiaires.Requery
> End If

> End Sub

> Mais si mon formulaire frmVirement est fermé il m'affiche un message,
> que le formulaire frmVirement est introuvable (forcément il est ferm é
> justement !) et me surligne la 1ère ligne Form(stDocName) ... en
> débogage.

> Comment arranger cela ?

> merci beaucoup

> Sandrine- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Publicité
Poster une réponse
Anonyme