Bonjour, est-il possible d'écrire une procédure comme cela?
Merci.Code:
1
2
3
4
5
6
7 sub check (c1 as checkbox, c2 as checkbox) on c1_change if c2.value=true then c1.value=false end if end sub
Version imprimable
Bonjour, est-il possible d'écrire une procédure comme cela?
Merci.Code:
1
2
3
4
5
6
7 sub check (c1 as checkbox, c2 as checkbox) on c1_change if c2.value=true then c1.value=false end if end sub
Code:
1
2
3
4 Private Sub c1_Change() If c2 Then c1 = False End Sub
Bonjour,
On pourrait aussi y aller comme ceci
Mais ça donne la même chose que des OptionButtons.Code:
1
2
3
4
5
6
7 Private Sub C1_Click() C2.Value = Not C1.Value End Sub Private Sub C2_Click() C1.Value = Not C2.Value End Sub
Donc pourquoi ne pas les utiliser ?
J'ai un userform avec une centaine de checkbox pour lesquelles je doit faire ces traitements dans les deux sens. C'est pour cela que je veux faire une procédure pour l'appeler.
Pour appeler quoi ?Citation:
C'est pour cela que je veux faire une procédure pour l'appeler
Es-tu certain d'avoir besoin d'une centaine de checkbox ?
Il n'y aurait une autre manière de procéder ?
Ça fait beaucoup de contrôles à gérer...
Appeler la procédure.
Non il n'y a pas d'autre façon malheureusement.
Bonjour,
100 CheckBox, c'est une usine à gaz ?
Je te conseille vivement d'utiliser un module de classe.
C'est à dire?
Bonsoir,
Si le but est de mettre tous les "CheckBox" à False à part celui qui est cliqué (quoique comme écrit Parmi "utiliser les OptionButtons") et si ceux-ci sont placés sur la feuille (car il faudrait adapter sur un USF)
Dans ThisWorkbook, ce codedans un module quelconqueCode:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Workbook_Open() Dim Cl As AChekBox Set Collect = New Collection For Each Obj In Feuil1.OLEObjects If TypeOf Obj.Object Is MSForms.CheckBox Then Set Cl = New AChekBox Set Cl.GrChekBox = Obj.Object Collect.Add Cl End If Next Obj End Sub
Dans un module de classe renommé "AChekBox"Code:
1
2 Public Collect As Collection Public Obj As OLEObject
Ensuite, enregistrer (sous un autre nom pour essai), fermer et ré-ouvrirCode:
1
2
3
4
5
6
7
8
9
10
11
12 Public WithEvents GrChekBox As MSForms.CheckBox Private Sub GrChekBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) For Each Obj In Feuil1.OLEObjects 'attention au nom de la feuille If TypeOf Obj.Object Is MSForms.CheckBox Then If Obj.Name <> GrChekBox.Name Then Obj.Object = False 'ou ce que tu veux End If End If Next Obj End Sub
A voir si ça correspond à ce que tu veux mais tu devrais pouvoir adapter