Bonjour,
Sur un userform, je souhaiterais que l'usager ne puisse choisir qu'un maxim=
um de 7checkbox parmi les checkbox de 20 =E0 29.....autrement dit, la macro=
ne devrait pas affecter les 19 premiers checkbox.
Tu veux retenir 7 checkbox et affecter 19 premiers checkbox.
Pour moi, écris-moi ça en chinois, au moins là, je vais savoir pourquoi je ne saisis pas!
Denys
Bonjour Denis
Sur le userform, il y a un multipage avec quatre pages. Sur la quatrième page, il y a plusieurs checkbox (checkbox20 jusqu'à checkbox29) parmi les quels l'usager doit faire des choix.
Je souhaite que l'usager ne puisse pas faire plus de 7 choix parmi les chec kbox 20 à 29....
Les 19 précédents correspondent à autre chose qui n'ont pas d'inciden ce en rapport aux checkbox 20 à 29....
C'est plus compréhensible ainsi ?
Merci Denys
Bonjour Denis
Sur le userform, il y a un multipage avec quatre pages. Sur la quatrième page, il y a plusieurs checkbox (checkbox20 jusqu'à checkbox29) parmi les quels l'usager doit faire des choix.
Je souhaite que l'usager ne puisse pas faire plus de 7 choix parmi les chec kbox 20 à 29....
Les 19 précédents correspondent à autre chose qui n'ont pas d'inciden ce en rapport aux checkbox 20 à 29....
Sur le userform, il y a un multipage avec quatre pages. Sur la quatrième page, il y a plusieurs checkbox (checkbox20 jusqu'à checkbox29) parmi les quels l'usager doit faire des choix.
Je souhaite que l'usager ne puisse pas faire plus de 7 choix parmi les chec kbox 20 à 29....
Les 19 précédents correspondent à autre chose qui n'ont pas d'inciden ce en rapport aux checkbox 20 à 29....
C'est plus compréhensible ainsi ?
Merci Denys
MichD
Le plus simple, c'est ce type de procédure que tu appelles lors de la validation
Comme les contrôles sur la page 4 du Multipage, l'index est alors 0 puisque le décompte débute à 0 ( page 1 = 0)
'------------------------------------------------------------ Private Sub CommandButton1_Click() Dim C As Control, X As Long For Each C In Me.MultiPage1.Pages(1).Controls If TypeName(C) = "CheckBox" Then If C.Value = True And X < 8 Then X = X + 1 If X > 7 Then C.Value = False MsgBox "Vous avez coché un nombre de checkbox plus grand que 7." End If End If End If Next End Sub '------------------------------------------------------------
Une autre approche serait de définir la variable X dans le haut du module Userform
et pour chacun des checkbox, tu vérifies si X dépasse 7
Tu aurais quelque chose du genre pour chacun des checkbox (9) '---------------------------------------------- Private Sub CheckBox1_Click() If Me.CheckBox1.Value = True Then X = X + 1 Else X = X - 1 Me.CheckBox1.Value = False End If If X > 7 Then MsgBox "Limite dépassée" End Sub '----------------------------------------------
Le plus simple, c'est ce type de procédure que tu appelles lors de la
validation
Comme les contrôles sur la page 4 du Multipage,
l'index est alors 0 puisque le décompte débute à 0 ( page 1 = 0)
'------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim C As Control, X As Long
For Each C In Me.MultiPage1.Pages(1).Controls
If TypeName(C) = "CheckBox" Then
If C.Value = True And X < 8 Then
X = X + 1
If X > 7 Then
C.Value = False
MsgBox "Vous avez coché un nombre de checkbox plus grand que
7."
End If
End If
End If
Next
End Sub
'------------------------------------------------------------
Une autre approche serait de définir la variable X dans le haut du module
Userform
et pour chacun des checkbox, tu vérifies si X dépasse 7
Tu aurais quelque chose du genre pour chacun des checkbox (9)
'----------------------------------------------
Private Sub CheckBox1_Click()
If Me.CheckBox1.Value = True Then
X = X + 1
Else
X = X - 1
Me.CheckBox1.Value = False
End If
If X > 7 Then MsgBox "Limite dépassée"
End Sub
'----------------------------------------------
Le plus simple, c'est ce type de procédure que tu appelles lors de la validation
Comme les contrôles sur la page 4 du Multipage, l'index est alors 0 puisque le décompte débute à 0 ( page 1 = 0)
'------------------------------------------------------------ Private Sub CommandButton1_Click() Dim C As Control, X As Long For Each C In Me.MultiPage1.Pages(1).Controls If TypeName(C) = "CheckBox" Then If C.Value = True And X < 8 Then X = X + 1 If X > 7 Then C.Value = False MsgBox "Vous avez coché un nombre de checkbox plus grand que 7." End If End If End If Next End Sub '------------------------------------------------------------
Une autre approche serait de définir la variable X dans le haut du module Userform
et pour chacun des checkbox, tu vérifies si X dépasse 7
Tu aurais quelque chose du genre pour chacun des checkbox (9) '---------------------------------------------- Private Sub CheckBox1_Click() If Me.CheckBox1.Value = True Then X = X + 1 Else X = X - 1 Me.CheckBox1.Value = False End If If X > 7 Then MsgBox "Limite dépassée" End Sub '----------------------------------------------