clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007
-
21 nov. 2007 à 10:10
clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007
-
21 nov. 2007 à 15:25
Bonjour chers experts,
Voici mon problème: J'ai un UserForm2 avec 22 checkbox. Je voudrais qu'en cochant un et un seul quelconque de ces 22 checkbox, la propriété "enable" des 21 autres passe automatiquement à "False". J'espère avoir été suffisamment clair.
Je suppose que c'est un jeu d'enfant pour vous les génies mais pour un nul comme moi, c'est trop. J'en suis encore à oublier les "End if" dans mes codes. Cela en dit long sur mon niveau.
Merci d'avance à toutes les bonnes volontés qui s'intéresseront à ma question. Restant à votre disposition, je vous souhaite une agréable journée malgré la grêve.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 nov. 2007 à 10:36
Salut,
Hélas en VBA pas de propriété Index pour les contrôle.
Essaie ce petit code.
Seul Problème tu doit faire appelle à cette procédure dans CHAQUE evenement click sur les CheckBox (voir code exemple avec 4 CheckBox)
Private Sub CheckBox1_Click()
Call DisableCheckBox(CheckBox1)
End Sub<hr />
Private Sub CheckBox2_Click()
Call DisableCheckBox(CheckBox2)
End Sub<hr />
Private Sub CheckBox3_Click()
Call DisableCheckBox(CheckBox3)
End Sub<hr />
Private Sub CheckBox4_Click()
Call DisableCheckBox(CheckBox4)
End Sub<hr />
Private Sub DisableCheckBox(ChkSelect As MSForms.CheckBox)
Dim Ctrl As Control
'Pour chaque controle dans le formulaire
For Each Ctrl In Me.Controls
'Si c'est un CheckBox
If TypeOf Ctrl Is MSForms.CheckBox Then
'Et que ce n'est pas celui sur lequel
'on à agit
If Ctrl.Name <> ChkSelect.Name Then
'Enable dépend de la valeur de selection Ctrl.Enabled Not (ChkSelect.Value True)
End If
End If
Next
End Sub , ----
[code.aspx?ID=41455 By Renfield]
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 21 nov. 2007 à 10:37
Salut,
Pour faire des controles indexés, au lieu de les appeler Bidule1, Bidule2, Bidule3, etc.... appelle les tous Bidule, et mets leur un index (0,1,2,3,....)
quand tu fais un clic sur l'un d'eux, ça va te faire genre
Public Sub Bidule_Click (Index as integer)
Le "Index" est le numéro du controle sur lequel tu as appuyé.
Il te suffit de faire une boucle sur i de 1 à 22 qui met bidule(i).enabled=false, sauf si i=Index
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 nov. 2007 à 10:38
Re,
Une petite amélioration pour les appels serait
Private Sub CheckBox1_Click()
Call DisableCheckBox(Me.ActiveControl)
End Sub<hr />
Private Sub CheckBox2_Click()
Call DisableCheckBox(Me.ActiveControl)
End Sub<hr />
Private Sub CheckBox3_Click()
Call DisableCheckBox(Me.ActiveControl)
End Sub<hr />
Private Sub CheckBox4_Click()
Call DisableCheckBox(Me.ActiveControl)
End Sub , ----
[code.aspx?ID=41455 By Renfield]
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 21 nov. 2007 à 10:38
Ah, j'ai cru VB6, j'avais pas vu que c'était en VBA, ben fais comme te le dit jrivet alors >_< (qui a posté en même temps que moi, donc j'avais pas vu son message non plus :p
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 nov. 2007 à 11:07
salut,
euh..... et les optionbuttons? ils servent à quoi?
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007 21 nov. 2007 à 14:58
Salut jrivet,
Je ne sais pas si tu es toujours là. Je viens de tester ton code. J'ai mis Call DisableCheckBox(Me.ActiveControl)
dans Private Sub CheckBox2_Click() et en cochant CheckBox1, je m'attendais à ce que CheckBox2 passe à enable = False. Mais, rien ne se passe. Ai-je mal fait quelquechose?
clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007 21 nov. 2007 à 15:13
Et pourquoi, en cliquant sur CheckBox2 après y avoir mis Call DisableCheckBox(Me.ActiveControl)
dans Private Sub CheckBox2_Click(), j'ai un message d'erreur du style "erreur de compilation variable ou procédue attendue et non un module"?