OVH Cloud OVH Cloud

enable

4 réponses
Avatar
Martin
Bonjour,

J aimerais que la selection de la valeur "oui" dans un
champ oui/non debloque ("enable") d autres champs sur un
formulaire.

Plutot que de repeter "x" fois le code suivant, y a t il
un racourci? J avais pense faire appel a la
propriete "tag" en assignant une caracteristique commune
a tous les champs que je veux debloquer. Mais je ne sais
pas comment faire.

Merci!

Private Sub Promoter_AfterUpdate()
If Me.Promoter = "-1" Then
Me.PromoterName.Enabled = True
Else
Me.PromoterName.Enabled = False
End If
End Sub

4 réponses

Avatar
Raymond [mvp]
Bonjour.

Tu as, entr'autres, deux solutions simples:
- nommer tous les contrôles par le même nom suivi d'un index.
-placer une valeur dans remarques pour les repérer

Dim Ctl As Control
For Each Ctl In Me.Controls
If Left(Ctl.Name, 5) = "XXXXX" Then
If OuiNon Then
Ctl.Visible = False
Else
Ctl.Visible = True
End If
End If
Next Ctl

Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.Tag = "XXXXX" Then
If OuiNon Then
Ctl.Visible = False
Else
Ctl.Visible = True
End If
End If
Next Ctl

les True/false sont à ajuster à tes tests réels.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Martin" a écrit dans le message de
news:4a8801c48049$aa32a430$
Bonjour,

J aimerais que la selection de la valeur "oui" dans un
champ oui/non debloque ("enable") d autres champs sur un
formulaire.

Plutot que de repeter "x" fois le code suivant, y a t il
un racourci? J avais pense faire appel a la
propriete "tag" en assignant une caracteristique commune
a tous les champs que je veux debloquer. Mais je ne sais
pas comment faire.

Merci!

Private Sub Promoter_AfterUpdate()
If Me.Promoter = "-1" Then
Me.PromoterName.Enabled = True
Else
Me.PromoterName.Enabled = False
End If
End Sub



Avatar
Martin
Merci Raymond.

J ai essaye la 2eme methode. Mais pour le
ctl.Visibleúlse, j ai un message disant que cet object
ne supporte pas cette methode/property.

Ou ai je donc faute?

Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.Tag = "Enable" Then
If Me.Promoter = "-1" Then
Ctl.Enable = True
Else
Ctl.Enable = False
End If
End If
Next Ctl
Avatar
Raymond [mvp]
ce n'est pas Enable mais Enabled qu'il faut indiquer.
pour le test If Me.Promoter = "-1"
mettre If Me.Promoter = -1 ou simplement If Me.Promoter Then

il faut tester aussi que le nom ne soit pas égal à celui qui a le focus car
il y aura une erreur.
certains contrôles ne supportent pas cette propriété, bien vérifier quand tu
entres tes remarques.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Martin" a écrit dans le message de
news:4ded01c48054$4a5aa840$
Merci Raymond.

J ai essaye la 2eme methode. Mais pour le
ctl.Visibleúlse, j ai un message disant que cet object
ne supporte pas cette methode/property.

Ou ai je donc faute?

Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.Tag = "Enable" Then
If Me.Promoter = "-1" Then
Ctl.Enable = True
Else
Ctl.Enable = False
End If
End If
Next Ctl


Avatar
Merci Raymond.
'fectivement, comme dirait Beru, ca marche tres bien.