OVH Cloud OVH Cloud

formulaire à affichage variable des controles

7 réponses
Avatar
lucifer
Bonjour,

je bloque bêtement sur un petit pb sous Access 2003. J'espère que quelqu'un
saura me dépanner.
Voilà :
Soit un formulaire affichant les valeurs d'une table dans des contrôles
simples
(combobox, textbox). J'utilise des listes de valeurs déroulantes pour
renseigner
certains champs. Or je souhaiterai que des champs soient visibles ou non en
fonction des valeurs sélectionnées dans une des listes. J'ai donc écrit un
code de
procédure évènementiel sur la propriété "AfterUpdate" d'une liste comme suit
:

Private Sub [mon controle]_AfterUpdate()
Dim valeur As String
valeur = Me.[controle_liste].Value -- valeur dans la liste conditionnant
l'afichage --
If valeur = "[ma valeur test]" Then
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
Me.Controls("C").Visible = False
Me.Controls("D").Visible = True
ElseIf valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Me.Controls("C").Visible = True
Me.Controls("D").Visible = False
End If
End Sub

Ceci fonctionne parfaitement pour un enregistrement mais dès que je créé un
nouvel enregistrement, je ne parviens pas à réinitialiser le formulaire dans
l'affichage initial des controles. De plus, si je me positionne sur un
enregistrement
existant je ne parviens pas à "relire" la valeur sélectionnée qui
conditionne l'affichage
des autres controles. J'ai tenté le code évènementiel suivant pour la
propriété "Sur Activation" :

Dim valeur As String
valeur = Me.[controle_liste].Value
If valeur Is Not Null Then
If valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Else
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
End If
Else
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
End If

Mais il y a une erreur à l'exécution : Erreur d'exécution 424 "Objet requis"
. Où ai-je
fait une boulette ? Et quelle solution adopter pour que mon système
fonctionne ?

J'espère avoir été assez clair dans mon explication. Merci d'avance pour vos
suggestions.

Eric

7 réponses

Avatar
Luiz Cláudio
Hi Eric,

I'm sure you were clear in your explanation, but for me it sounds 80% like
greek anyway... :-(

First: if your code runs fine in YourControl_AfterUpdate event, I guess you
will need to use it also on Form_Current event, in order to make your rules
work for other records.

Second: the syntax "If valeur Is Not Null Then" may work for queries, but in
VBA modules you have to use IsNull() function to test whether your value is
null or not:
If IsNull(Valeur) Then
etc.

Well, that's all I could understand from your question (my French is very
poor), but I hope it can be helpful for you.

Luiz Cláudio C. V. Rocha
São Paulo - Brasil



"lucifer" escreveu na mensagem
news:
Bonjour,

je bloque bêtement sur un petit pb sous Access 2003. J'espère que
quelqu'un

saura me dépanner.
Voilà :
Soit un formulaire affichant les valeurs d'une table dans des contrôles
simples
(combobox, textbox). J'utilise des listes de valeurs déroulantes pour
renseigner
certains champs. Or je souhaiterai que des champs soient visibles ou non
en

fonction des valeurs sélectionnées dans une des listes. J'ai donc écrit un
code de
procédure évènementiel sur la propriété "AfterUpdate" d'une liste comme
suit

:

Private Sub [mon controle]_AfterUpdate()
Dim valeur As String
valeur = Me.[controle_liste].Value -- valeur dans la liste
conditionnant

l'afichage --
If valeur = "[ma valeur test]" Then
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
Me.Controls("C").Visible = False
Me.Controls("D").Visible = True
ElseIf valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Me.Controls("C").Visible = True
Me.Controls("D").Visible = False
End If
End Sub

Ceci fonctionne parfaitement pour un enregistrement mais dès que je créé
un

nouvel enregistrement, je ne parviens pas à réinitialiser le formulaire
dans

l'affichage initial des controles. De plus, si je me positionne sur un
enregistrement
existant je ne parviens pas à "relire" la valeur sélectionnée qui
conditionne l'affichage
des autres controles. J'ai tenté le code évènementiel suivant pour la
propriété "Sur Activation" :

Dim valeur As String
valeur = Me.[controle_liste].Value
If valeur Is Not Null Then
If valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Else
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
End If
Else
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
End If

Mais il y a une erreur à l'exécution : Erreur d'exécution 424 "Objet
requis"

. Où ai-je
fait une boulette ? Et quelle solution adopter pour que mon système
fonctionne ?

J'espère avoir été assez clair dans mon explication. Merci d'avance pour
vos

suggestions.

Eric





Avatar
3stone
Salut,

"lucifer"
je bloque bêtement sur un petit pb sous Access 2003. J'espère que quelqu'un
saura me dépanner.
Voilà :
Soit un formulaire affichant les valeurs d'une table dans des contrôles
simples
(combobox, textbox). J'utilise des listes de valeurs déroulantes pour
renseigner
certains champs. Or je souhaiterai que des champs soient visibles ou non en
fonction des valeurs sélectionnées dans une des listes. J'ai donc écrit un
code de
procédure évènementiel sur la propriété "AfterUpdate" d'une liste comme suit
:

Private Sub [mon controle]_AfterUpdate()
Dim valeur As String
valeur = Me.[controle_liste].Value -- valeur dans la liste conditionnant
l'afichage --
If valeur = "[ma valeur test]" Then
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
Me.Controls("C").Visible = False
Me.Controls("D").Visible = True
ElseIf valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Me.Controls("C").Visible = True
Me.Controls("D").Visible = False
End If
End Sub

Ceci fonctionne parfaitement pour un enregistrement mais dès que je créé un
nouvel enregistrement, je ne parviens pas à réinitialiser le formulaire dans
l'affichage initial des controles.



Cela dépend de ce que tu appelles "initial"


De plus, si je me positionne sur un
enregistrement
existant je ne parviens pas à "relire" la valeur sélectionnée qui
conditionne l'affichage
des autres controles. J'ai tenté le code évènementiel suivant pour la
propriété "Sur Activation" :



Par un simple :

Call MonControle_AfterUpdate()



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
lucifer
Merci à vous pour votre aide. Je crois que je devrais arriver à quelque
chose de fonctionnel
avec çà.

Thx to Luiz Claudio for his help. The IsNull() function could be usefull.
And sorry to put my request
in french but... it's a french newsgroug, isn't it ? ;-)

Eric

"lucifer" a écrit dans le message de
news:
Bonjour,

je bloque bêtement sur un petit pb sous Access 2003. J'espère que
quelqu'un

saura me dépanner.
Voilà :
Soit un formulaire affichant les valeurs d'une table dans des contrôles
simples
(combobox, textbox). J'utilise des listes de valeurs déroulantes pour
renseigner
certains champs. Or je souhaiterai que des champs soient visibles ou non
en

fonction des valeurs sélectionnées dans une des listes. J'ai donc écrit un
code de
procédure évènementiel sur la propriété "AfterUpdate" d'une liste comme
suit

:

Private Sub [mon controle]_AfterUpdate()
Dim valeur As String
valeur = Me.[controle_liste].Value -- valeur dans la liste
conditionnant

l'afichage --
If valeur = "[ma valeur test]" Then
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
Me.Controls("C").Visible = False
Me.Controls("D").Visible = True
ElseIf valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Me.Controls("C").Visible = True
Me.Controls("D").Visible = False
End If
End Sub

Ceci fonctionne parfaitement pour un enregistrement mais dès que je créé
un

nouvel enregistrement, je ne parviens pas à réinitialiser le formulaire
dans

l'affichage initial des controles. De plus, si je me positionne sur un
enregistrement
existant je ne parviens pas à "relire" la valeur sélectionnée qui
conditionne l'affichage
des autres controles. J'ai tenté le code évènementiel suivant pour la
propriété "Sur Activation" :

Dim valeur As String
valeur = Me.[controle_liste].Value
If valeur Is Not Null Then
If valeur <> "[ma valeur test]" Then
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
Else
Me.Controls("A").Visible = False
Me.Controls("B").Visible = True
End If
Else
Me.Controls("A").Visible = True
Me.Controls("B").Visible = False
End If

Mais il y a une erreur à l'exécution : Erreur d'exécution 424 "Objet
requis"

. Où ai-je
fait une boulette ? Et quelle solution adopter pour que mon système
fonctionne ?

J'espère avoir été assez clair dans mon explication. Merci d'avance pour
vos

suggestions.

Eric





Avatar
Anor
Bonjour,

lucifer :

| Thx to Luiz Claudio for his help. The IsNull() function could be
| usefull. And sorry to put my request
| in french but... it's a french newsgroug, isn't it ? ;-)

non pas français mais francophone .
Tu pouvais donc même remercier l'ami Luiz en français car il le comprend très bien.

Le problème, c'est probablement que s'il répond en français, il risque se faire remarquer que le
language CHAT
n'est pas souhaitable, comme cela est écrit ici :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Néanmoins, comme nulle part il n'est fait mention que l'on doive absolument répondre en
français, en suisse en belge ou en canadien, alors au moins, en répondant en bon
anglais de milk shake spear, il n'est pas trop hors règles. ...

ps : hé hé, moi ça m'amuse que l'ombre brésilienne de luky luke
fasse quelques interventions sur ce forum ;-)))

--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
Pierre CFI [mvp]
en plus, il est mvp
je sais pas s'il a des copines, car les brésilliennes........yaooooooo

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news:
Bonjour,

lucifer :

| Thx to Luiz Claudio for his help. The IsNull() function could be
| usefull. And sorry to put my request
| in french but... it's a french newsgroug, isn't it ? ;-)

non pas français mais francophone .
Tu pouvais donc même remercier l'ami Luiz en français car il le comprend très bien.

Le problème, c'est probablement que s'il répond en français, il risque se faire remarquer que le
language CHAT
n'est pas souhaitable, comme cela est écrit ici :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Néanmoins, comme nulle part il n'est fait mention que l'on doive absolument répondre en
français, en suisse en belge ou en canadien, alors au moins, en répondant en bon
anglais de milk shake spear, il n'est pas trop hors règles. ...

ps : hé hé, moi ça m'amuse que l'ombre brésilienne de luky luke
fasse quelques interventions sur ce forum ;-)))

--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------




Avatar
Luiz Cláudio
en plus, il est mvp
Yes, and I hope to meet you next month at Global Summit (I'll stay in

Sheraton).

je sais pas s'il a des copines, car les brésilliennes........yaooooooo
Yes, I'm almost married, except during Carnaval, when I consider myself

single during 4 days ;-)
(I hope my girlfriend does never read this newsgroup...)

Luiz Cláudio C. V. Rocha
São Paulo - Brasil

Avatar
Luiz Cláudio
And sorry to put my request
in french but... it's a french newsgroug, isn't it ? ;-)


Ok, I forgive you... :-)

At least I can practice a little of French. Maybe sooner or later I'll write
in French again.

Luiz Cláudio C. V. Rocha
São Paulo - Brasil