1 = 21

Résolu
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 novembre 2007 - 21 nov. 2007 à 10:10
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 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.

14 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 nov. 2007 à 15:16
Re,
Recolle le codes que tu utilises.

J'ai testé ce code avant de le proposer et chez moi pas de souci.

@+: Ju£i?n
Pensez: Réponse acceptée
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 nov. 2007 à 10:24
Salut

Pour ce genre de truc, il faut que tu utilises les contrôles indexés
tu poses un index sur tout tes chechbox

et ensuite dans fonction click aura l'index en entrée.

En suite il suffit de faire une bloucle qui desactive tout sauf l'index selectionné.

Bon courage
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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]

@+: Ju£i?n
Pensez: Réponse acceptée
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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]

Ce qui permet de gagner du temps.

@+: Ju£i?n
Pensez: Réponse acceptée
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
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
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
21 nov. 2007 à 10:40
Et en plus, ça l'amuse, il arrête pas d'écrire en même temps que moi il s'arrête plus lol :p     ;-)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 nov. 2007 à 10:41
Re,
Pas assez rapide petit scarabée

@+: Ju£i?n
Pensez: Réponse acceptée
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 novembre 2007
21 nov. 2007 à 13:30
Pardon, une réunion m'a empêché de découvrir toutes vos propositions. Je les regarde tout de suite.
Mille pardons.
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 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?
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 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"?
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 novembre 2007
21 nov. 2007 à 15:19
Pardon mais que veux-tu dire par "Recolle le codes que tu utilises."? 
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 novembre 2007
21 nov. 2007 à 15:25
jrivet, je viens de tout comprendre. Cela marche super hyper bien. Tu es un génie. Merci, Merci, Merci, Merci, Merci, Merci, Merci....
0
Rejoignez-nous