Bonjour
J'ai une macro avec une foule de checkbox
Je veux que cette macro s'active automatiquement dès qu'un utilisateur clique sur n'importe laquelle des checkbox
Quelle est la suite?Code:Private Sub CheckBox
Version imprimable
Bonjour
J'ai une macro avec une foule de checkbox
Je veux que cette macro s'active automatiquement dès qu'un utilisateur clique sur n'importe laquelle des checkbox
Quelle est la suite?Code:Private Sub CheckBox
Call MaMacro
Bonjour,
Dans ce cas, avec un module de classe.Citation:
J'ai une macro avec une foule de checkbox
A mettre dans un module de classe :
A mettre dans un module standard et à adapter (macro pour l'exemple) :Code:
1
2
3
4
5
6
7
8 Public WithEvents GroupeChk As MSForms.CheckBox Private Sub GroupeChk_Click() MaMacro GroupeChk End Sub
A mettre dans le module de ta Form :Code:
1
2
3
4
5
6 Sub MaMacro(Chk As MSForms.CheckBox) MsgBox Chk.Caption End Sub
Hervé.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Dim Chk() As New Classe1 Private Sub UserForm_Initialize() Dim Ctrl As Control Dim I As Integer For Each Ctrl In Me.Controls If TypeName(Ctrl) = "CheckBox" Then I = I + 1 ReDim Preserve Chk(1 To I) Set Chk(I).GroupeChk = Ctrl End If Next Ctrl End Sub
Merci Hervé
Mais y'a quelques trucs que je ne comprends pas bien.
Je vais mieux vous expliquer mon projet qui est tout simple
J'ai un formulaire avec une foule de questions
Chaque question à trois choix de réponse sous la forme de Checkbox
Il n'y a qu'une seule checkbox qui peut être coché par réponse
Je n'ai pas envie de programmer chaque groupe de checkbox par groupe de trois.
J'essaie donc de un programme global qui va tout gérer
Voici ce que j'ai jusqu'à maintenant
Mon soucis, c'est que pour fonctionner, ce programme doit être activé à chaque événement (chaque fois que quelqu'un clique dans un checkbox)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim I As Integer For I = 1 To 22 If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then ActiveSheet.OLEObjects("CheckBox" & I + 1).Object.Value = False ActiveSheet.OLEObjects("CheckBox" & I + 2).Object.Value = False ElseIf ActiveSheet.OLEObjects("CheckBox" & I - 1).Object.Value = True Then ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True ActiveSheet.OLEObjects("CheckBox" & I + 1).Object.Value = False ElseIf ActiveSheet.OLEObjects("CheckBox" & I - 2).Object.Value = True Then ActiveSheet.OLEObjects("CheckBox" & I - 1).Object.Value = False ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = False End If Next I
Comment amarrer mon programme avec le vôtre.
Merci
Bonjour,
Dans ton cas, des boutons d'option seraient plus indiqués. Tu utilise des zones de groupe pour les isoler par trois et comme ça, tu n'as pas à gérer la sélection des uns quand un autre est cliqué ! Teste et reviens avec plus de précisions sur ton formulaire.
Hervé.
Bonjour,
Répondu la même chose là:
http://www.developpez.net/forums/d14...n-automatique/
Prière de ne pas commencer plusieurs discussions sur le même sujet.