Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Choisir maximum 7 checkbox

4 réponses
Avatar
Denys
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.

Sauriez-vous comment peroc=E9der ?

Merci pour votre temps
Denys

4 réponses

Avatar
MichD
Bonjour,

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!
Avatar
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
Avatar
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
'----------------------------------------------
Avatar
Denys
Bonjour Denis,

Merci infiniment et bonne fin de semaine

Denys