1 = 21 [Résolu]

Signaler
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
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
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
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
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
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
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
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     ;-)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Re,
Pas assez rapide petit scarabée

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
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
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007

Pardon, une réunion m'a empêché de découvrir toutes vos propositions. Je les regarde tout de suite.
Mille pardons.
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007

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?
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007

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"?
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007

Pardon mais que veux-tu dire par "Recolle le codes que tu utilises."? 
Messages postés
32
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
21 novembre 2007

jrivet, je viens de tout comprendre. Cela marche super hyper bien. Tu es un génie. Merci, Merci, Merci, Merci, Merci, Merci, Merci....