Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Verouillage d'un champs selon la valeur d'une case à cocher

18 réponses
Avatar
s.jean
Bonjour,

J'ai un formulaire avec plusieurs champs + un sous-formulaire.

Je souhaiterai que tous les champs du formulaire et sous-formulaire
soient verouill=E9s si la case Cocher35 est coch=E9e, en laissant celle ci
non verouill=E9e pour pouvoir modifier et verouiller / d=E9verouiller.

Quel code puis je utiliser ? j'ai d=E9j=E0 essay=E9 plusieurs codes trouv=E9=
s
sur ce forum mais en vain ...

Merci beaucoup
Sandrine

10 réponses

1 2
Avatar
Fabien
<blockquote class="block0"><br />
Bonjour,<br />
<br />
J'ai un formulaire avec plusieurs champs + un sous-formulaire.<br />
<br />
Je souhaiterai que tous les champs du formulaire et sous-formulaire<br />
soient verouill&eacute;s si la case Cocher35 est coch&eacute;e, en laissant celle ci<br />
non verouill&eacute;e pour pouvoir modifier et verouiller / d&eacute;verouiller.<br />
<br />
Quel code puis je utiliser ? j'ai d&eacute;j&agrave; essay&eacute; plusieurs codes trouv&eacute;s<br />
sur ce forum mais en vain ...<br />
<br />
Merci beaucoup<br />
Sandrine<br />
Salut<br />
</blockquote><br />
Une piste avec un truc du genre pour parcourir les controles<br />
Dim moncontrol As Control<br />
For Each moncontrol In Me.Controls<br />
If moncontrol.Name&lt;&gt;&quot;Cocher35&quot; then<br />
moncontrol.Enable= Me.cocher35 'Ca marche a condition que la<br />
propri&eacute;t&eacute; Enable soit support&eacute;e par le controle<br />
end if<br />
Next<br />
<br />
Avatar
s.jean
Bonjour,<br />
<br />
J'ai donc mis le code suivant sur l'&eacute;v&egrave;nement activation du<br />
formulaire :<br />
Private Sub Form_Current()<br />
Dim moncontrol As Control<br />
For Each moncontrol In Me.Controls<br />
If moncontrol.Name &lt;&gt; &quot;Cocher35&quot; Then<br />
moncontrol.Enable = Me.Cocher35<br />
End If<br />
Next<br />
<br />
<br />
End Sub<br />
<br />
<br />
Quand j'ouvre le formulaire j'ai un message Propri&eacute;t&eacute; ou m&eacute;thode non<br />
g&eacute;r&eacute;e par cet objet.<br />
<br />
D'o&ugrave; vient l'erreur ?<br />
<br />
merci<br />
<br />
Sandrine<br />
<br />
On 16 juin, 16:54, Fabien &lt;&gt; wrote:<br />
<blockquote class="block0"><br />
s.jean a &eacute;crit :&gt; Bonjour,<br />
<br />
<blockquote class="block1"><br />
J'ai un formulaire avec plusieurs champs + un sous-formulaire.<br />
<br />
Je souhaiterai que tous les champs du formulaire et sous-formulaire<br />
soient verouill&eacute;s si la case Cocher35 est coch&eacute;e, en laissant celle ci<br />
non verouill&eacute;e pour pouvoir modifier et verouiller / d&eacute;verouiller.<br />
<br />
Quel code puis je utiliser ? j'ai d&eacute;j&agrave; essay&eacute; plusieurs codes trou v&eacute;s<br />
sur ce forum mais en vain ...<br />
<br />
Merci beaucoup<br />
Sandrine<br />
<br />
</blockquote><br />
Salut<br />
Une piste avec un truc du genre pour parcourir les controles<br />
&nbsp; &nbsp; &nbsp;Dim moncontrol AsControl<br />
&nbsp; &nbsp; &nbsp;ForEachmoncontrol In Me.Controls<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If moncontrol.Name&lt;&gt;&quot;Cocher35&quot; then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; moncontrol.Enable= Me.cocher35 'Ca march e a condition que la<br />
propri&eacute;t&eacute;Enablesoit support&eacute;e par le controle<br />
&nbsp; &nbsp; &nbsp; &nbsp; end if<br />
&nbsp; &nbsp; &nbsp;Next<br />
<br />
</blockquote><br />
<br />
Avatar
Fabien
<blockquote class="block0"><br />
Bonjour,<br />
<br />
J'ai donc mis le code suivant sur l'&eacute;v&egrave;nement activation du<br />
formulaire :<br />
Private Sub Form_Current()<br />
Dim moncontrol As Control<br />
For Each moncontrol In Me.Controls<br />
If moncontrol.Name &lt;&gt; &quot;Cocher35&quot; Then<br />
moncontrol.Enable = Me.Cocher35<br />
End If<br />
Next<br />
<br />
<br />
End Sub<br />
<br />
<br />
Quand j'ouvre le formulaire j'ai un message Propri&eacute;t&eacute; ou m&eacute;thode non<br />
g&eacute;r&eacute;e par cet objet.<br />
<br />
D'o&ugrave; vient l'erreur ?<br />
<br />
merci<br />
<br />
Sandrine<br />
<br />
On 16 juin, 16:54, Fabien &lt;&gt; wrote:<br />
<blockquote class="block1"><br />
s.jean a &eacute;crit :&gt; Bonjour,<br />
<br />
<blockquote class="block0"><br />
J'ai un formulaire avec plusieurs champs + un sous-formulaire.<br />
Je souhaiterai que tous les champs du formulaire et sous-formulaire<br />
soient verouill&eacute;s si la case Cocher35 est coch&eacute;e, en laissant celle ci<br />
non verouill&eacute;e pour pouvoir modifier et verouiller / d&eacute;verouiller.<br />
Quel code puis je utiliser ? j'ai d&eacute;j&agrave; essay&eacute; plusieurs codes trouv&eacute;s<br />
sur ce forum mais en vain ...<br />
Merci beaucoup<br />
Sandrine<br />
Salut<br />
</blockquote><br />
Une piste avec un truc du genre pour parcourir les controles<br />
Dim moncontrol AsControl<br />
ForEachmoncontrol In Me.Controls<br />
If moncontrol.Name&lt;&gt;&quot;Cocher35&quot; then<br />
moncontrol.Enable= Me.cocher35 'Ca marche a condition que la<br />
propri&eacute;t&eacute;Enablesoit support&eacute;e par le controle<br />
end if<br />
Next<br />
<br />
</blockquote><br />
Salut,<br />
</blockquote><br />
Cela provient du fait que certain controle ne possedent pas la propriete<br />
enable. (les etiquettes par exemple)<br />
Il faudrait donc creuser pour savoir comment connaitre la nature du<br />
controle ou, mais c'est pas beau, mettre un On error resume next au<br />
d&eacute;but du code.<br />
<br />
<br />
<br />
Avatar
Fabien
Eric a écrit :
Fabien a écrit :
s.jean a écrit :
Bonjour,

J'ai donc mis le code suivant sur l'évènement activation du
formulaire :
Private Sub Form_Current()
Dim moncontrol As Control
For Each moncontrol In Me.Controls
If moncontrol.Name <> "Cocher35" Then
moncontrol.Enable = Me.Cocher35
End If
Next


End Sub


Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
gérée par cet objet.

D'où vient l'erreur ?





Salut,
Cela provient du fait que certain controle ne possedent pas la
propriete enable. (les etiquettes par exemple)
Il faudrait donc creuser pour savoir comment connaitre la nature du
controle ou, mais c'est pas beau, mettre un On error resume next au
début du code.



Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?



Salut Eric
J'en pense que du bien ;-)
Avatar
s.jean
Bonjour,

Je pense également que ça bugue sur
moncontrol.Enable = Me.Cocher35

peut être parce que enable est de type vrai/faux et cocher35 de type
0/-1 (oui/non).

Si je mets ce code sur l'activation et l'afterupdate de cocher35 ça
marche :

Private Sub Form_Current()
Dim moncontrol As control
For Each moncontrol In Me.Controls
If (moncontrol.Name <> "Cocher35" And moncontrol.ControlType
<> acLabel And Cocher35 = -1) Then
moncontrol.Enabled = False
Else
If (moncontrol.Name <> "Cocher35" And
moncontrol.ControlType <> acLabel And Cocher35 = 0) Then
moncontrol.Enabled = True
End If
End If
Next

End Sub

Peut-on simplifier ce code ?

Merci
Sandrine


On 17 juin, 12:46, Eric wrote:
Fabien a écrit :





> s.jean a écrit :
>> Bonjour,

>> J'ai donc mis le code suivant sur l'évènement activation du
>> formulaire :
>> Private Sub Form_Current()
>> Dim moncontrol As Control
>>      For Each moncontrol In Me.Controls
>>          If moncontrol.Name <> "Cocher35" Then
>>                 moncontrol.Enable = Me.Cocher35
>>                 End If
>>      Next

>> End Sub

>> Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
>> gérée par cet objet.

>> D'où vient l'erreur ?
> Salut,
> Cela provient du fait que certain controle ne possedent pas la propriete
> enable. (les etiquettes par exemple)
> Il faudrait donc creuser pour savoir comment connaitre la nature du
> controle ou, mais c'est pas beau, mettre un On error resume next au
> début du code.

Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?

--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=fr - Masquer le texte des messages précédents -

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


Avatar
Michel_D
Bonjour,

Voici une variante.

Private Sub Form_Current()
Dim oCtrl As control
For Each oCtrl In Me.Controls
If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
If Cocher35 = -1 Then
oCtrl.Enabled = False
Else
oCtrl.Enabled = True
End If
End If
Next
End Sub


"s.jean" a écrit dans le message de news:
Bonjour,

Je pense également que ça bugue sur
moncontrol.Enable = Me.Cocher35

peut être parce que enable est de type vrai/faux et cocher35 de type
0/-1 (oui/non).

Si je mets ce code sur l'activation et l'afterupdate de cocher35 ça
marche :

Private Sub Form_Current()
Dim moncontrol As control
For Each moncontrol In Me.Controls
If (moncontrol.Name <> "Cocher35" And moncontrol.ControlType
<> acLabel And Cocher35 = -1) Then
moncontrol.Enabled = False
Else
If (moncontrol.Name <> "Cocher35" And
moncontrol.ControlType <> acLabel And Cocher35 = 0) Then
moncontrol.Enabled = True
End If
End If
Next

End Sub

Peut-on simplifier ce code ?

Merci
Sandrine


On 17 juin, 12:46, Eric wrote:
Fabien a écrit :





> s.jean a écrit :
>> Bonjour,

>> J'ai donc mis le code suivant sur l'évènement activation du
>> formulaire :
>> Private Sub Form_Current()
>> Dim moncontrol As Control
>> For Each moncontrol In Me.Controls
>> If moncontrol.Name <> "Cocher35" Then
>> moncontrol.Enable = Me.Cocher35
>> End If
>> Next

>> End Sub

>> Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
>> gérée par cet objet.

>> D'où vient l'erreur ?
> Salut,
> Cela provient du fait que certain controle ne possedent pas la propriete
> enable. (les etiquettes par exemple)
> Il faudrait donc creuser pour savoir comment connaitre la nature du
> controle ou, mais c'est pas beau, mettre un On error resume next au
> début du code.

Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?

--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=fr- Masquer le texte des messages précédents -

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


Avatar
Fabien
Et plus encore ;-)
Private Sub Form_Current()
> Dim oCtrl As control
> For Each oCtrl In Me.Controls
> If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
> oCtrl.Enabled = Not(Cocher35 = -1)
> End If
> Next
> End Sub

Michel_D a écrit :
Bonjour,

Voici une variante.

Private Sub Form_Current()
Dim oCtrl As control
For Each oCtrl In Me.Controls
If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
If Cocher35 = -1 Then
oCtrl.Enabled = False
Else
oCtrl.Enabled = True
End If
End If
Next
End Sub


"s.jean" a écrit dans le message de news:
Bonjour,

Je pense également que ça bugue sur
moncontrol.Enable = Me.Cocher35

peut être parce que enable est de type vrai/faux et cocher35 de type
0/-1 (oui/non).

Si je mets ce code sur l'activation et l'afterupdate de cocher35 ça
marche :

Private Sub Form_Current()
Dim moncontrol As control
For Each moncontrol In Me.Controls
If (moncontrol.Name <> "Cocher35" And moncontrol.ControlType
<> acLabel And Cocher35 = -1) Then
moncontrol.Enabled = False
Else
If (moncontrol.Name <> "Cocher35" And
moncontrol.ControlType <> acLabel And Cocher35 = 0) Then
moncontrol.Enabled = True
End If
End If
Next

End Sub

Peut-on simplifier ce code ?

Merci
Sandrine


On 17 juin, 12:46, Eric wrote:
Fabien a écrit :





s.jean a écrit :
Bonjour,
J'ai donc mis le code suivant sur l'évènement activation du
formulaire :
Private Sub Form_Current()
Dim moncontrol As Control
For Each moncontrol In Me.Controls
If moncontrol.Name <> "Cocher35" Then
moncontrol.Enable = Me.Cocher35
End If
Next
End Sub
Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
gérée par cet objet.
D'où vient l'erreur ?


Salut,
Cela provient du fait que certain controle ne possedent pas la propriete
enable. (les etiquettes par exemple)
Il faudrait donc creuser pour savoir comment connaitre la nature du
controle ou, mais c'est pas beau, mettre un On error resume next au
début du code.


Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?

--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=fr- Masquer le texte des messages précédents -

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





Avatar
Eric
re,

Là encore, si je peux, je virerai la parenthèse ouvrante sur la ligne du
If ou alors j'en rajouterai une fermante avant le Then
Pour une question d'équilibre ;-)

Ps: oui, je sais, c'est Michel l'instigateur

Fabien a écrit :
Et plus encore ;-)
Private Sub Form_Current()
> Dim oCtrl As control
> For Each oCtrl In Me.Controls
> If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
> oCtrl.Enabled = Not(Cocher35 = -1)
> End If
> Next
> End Sub

Michel_D a écrit :
Bonjour,

Voici une variante.

Private Sub Form_Current()
Dim oCtrl As control
For Each oCtrl In Me.Controls
If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
If Cocher35 = -1 Then
oCtrl.Enabled = False
Else
oCtrl.Enabled = True
End If
End If
Next
End Sub


"s.jean" a écrit dans le message de
news:
Bonjour,

Je pense également que ça bugue sur
moncontrol.Enable = Me.Cocher35

peut être parce que enable est de type vrai/faux et cocher35 de type
0/-1 (oui/non).

Si je mets ce code sur l'activation et l'afterupdate de cocher35 ça
marche :

Private Sub Form_Current()
Dim moncontrol As control
For Each moncontrol In Me.Controls
If (moncontrol.Name <> "Cocher35" And moncontrol.ControlType
<> acLabel And Cocher35 = -1) Then
moncontrol.Enabled = False
Else
If (moncontrol.Name <> "Cocher35" And
moncontrol.ControlType <> acLabel And Cocher35 = 0) Then
moncontrol.Enabled = True
End If
End If
Next

End Sub

Peut-on simplifier ce code ?

Merci
Sandrine


On 17 juin, 12:46, Eric wrote:
Fabien a écrit :





s.jean a écrit :
Bonjour,
J'ai donc mis le code suivant sur l'évènement activation du
formulaire :
Private Sub Form_Current()
Dim moncontrol As Control
For Each moncontrol In Me.Controls
If moncontrol.Name <> "Cocher35" Then
moncontrol.Enable = Me.Cocher35
End If
Next
End Sub
Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
gérée par cet objet.
D'où vient l'erreur ?


Salut,
Cela provient du fait que certain controle ne possedent pas la
propriete
enable. (les etiquettes par exemple)
Il faudrait donc creuser pour savoir comment connaitre la nature du
controle ou, mais c'est pas beau, mettre un On error resume next au
début du code.


Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?

--
A+
Erichttp://www.mpfa.info/
Archives
:http://groups.google.fr/group/microsoft.public.fr.access?hl=fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/group/microsoft.public.fr.access?hl=fr-
Masquer le texte des messages précédents -

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








--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Fabien
Je suis sur que c'est juste pour voir qui suit dans la salle ;-)
Eric a écrit :
re,

Là encore, si je peux, je virerai la parenthèse ouvrante sur la ligne du
If ou alors j'en rajouterai une fermante avant le Then
Pour une question d'équilibre ;-)

Ps: oui, je sais, c'est Michel l'instigateur

Fabien a écrit :
Et plus encore ;-)
Private Sub Form_Current()
> Dim oCtrl As control
> For Each oCtrl In Me.Controls
> If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
> oCtrl.Enabled = Not(Cocher35 = -1)
> End If
> Next
> End Sub

Michel_D a écrit :
Bonjour,

Voici une variante.

Private Sub Form_Current()
Dim oCtrl As control
For Each oCtrl In Me.Controls
If (oCtrl.Name<>"Cocher35" And oCtrl.ControlType<>acLabel Then
If Cocher35 = -1 Then
oCtrl.Enabled = False
Else
oCtrl.Enabled = True
End If
End If
Next
End Sub


"s.jean" a écrit dans le message de
news:
Bonjour,

Je pense également que ça bugue sur
moncontrol.Enable = Me.Cocher35

peut être parce que enable est de type vrai/faux et cocher35 de type
0/-1 (oui/non).

Si je mets ce code sur l'activation et l'afterupdate de cocher35 ça
marche :

Private Sub Form_Current()
Dim moncontrol As control
For Each moncontrol In Me.Controls
If (moncontrol.Name <> "Cocher35" And moncontrol.ControlType
<> acLabel And Cocher35 = -1) Then
moncontrol.Enabled = False
Else
If (moncontrol.Name <> "Cocher35" And
moncontrol.ControlType <> acLabel And Cocher35 = 0) Then
moncontrol.Enabled = True
End If
End If
Next

End Sub

Peut-on simplifier ce code ?

Merci
Sandrine


On 17 juin, 12:46, Eric wrote:
Fabien a écrit :





s.jean a écrit :
Bonjour,
J'ai donc mis le code suivant sur l'évènement activation du
formulaire :
Private Sub Form_Current()
Dim moncontrol As Control
For Each moncontrol In Me.Controls
If moncontrol.Name <> "Cocher35" Then
moncontrol.Enable = Me.Cocher35
End If
Next
End Sub
Quand j'ouvre le formulaire j'ai un message Propriété ou méthode non
gérée par cet objet.
D'où vient l'erreur ?


Salut,
Cela provient du fait que certain controle ne possedent pas la
propriete
enable. (les etiquettes par exemple)
Il faudrait donc creuser pour savoir comment connaitre la nature du
controle ou, mais c'est pas beau, mettre un On error resume next au
début du code.


Bonjour,

En plus, je pense qu'il faut mettre EnableD et non Enable

Qu'en pensez-vous ?

--
A+
Erichttp://www.mpfa.info/
Archives
:http://groups.google.fr/group/microsoft.public.fr.access?hl=fr-
Masquer le texte des messages précédents -

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










1 2