CheckBOX délimité le nbre de case coché

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ConsultantJP

XLDnaute Occasionnel
Bonjour à tous,

Mon sujet n'est pas complet car je n'avias pas assez de place mais j'ai deux questions au sujet des checkbox.


1ere Question :

J'ai environ 20 checkbox dans un USF et je voudrais que maximum 6 soit cochable, je sais que c possible mais je n'arrive pas a trouver la logique.

2Eme question :

Je voudrais que le caption des checkbox cochés lors de la validation soit envoyé dans les colonnes K à P (dans le cas ou 6 sont cochés).

Avez vous une idée pour cela ?

Merci
 
Re : CheckBOX délimité le nbre de case coché

Bonjour

Bonjour à tous,
1ere Question :
J'ai environ 20 checkbox dans un USF et je voudrais que maximum 6 soit cochable, je sais que c possible mais je n'arrive pas a trouver la logique.

Merci

Ci dessous un exemple de code pour limiter à 6 le nombre
Code:
Private Function nbchexcoche()
Dim £i As Byte
Dim action2 As String
Dim £Ctrl As Control
£i = 0
For Each £Ctrl In Me.Controls
    If TypeName(£Ctrl) = "CheckBox" Then
       If £Ctrl.Value = True Then £i = £i + 1
    End If
Next £Ctrl
nbchexcoche = £i
End Function

'code à mettre pour les CheckBox
Private Sub CheckBox1_Click()
If nbchexcoche > 6 Then CheckBox1.Value = False
End Sub

Une autre solution consiste à utiliser les modules de classes.

A tester

JP
 
Re : CheckBOX délimité le nbre de case coché

Bonjour Consultant, jp

Comme suggéré par jp, une autre solution, avec module de classe :

A placer dans le module de l'usf, événement "Initialize" de ce dernier.
Code:
Option Explicit
Private MesObjets() As New Classe1
Private Sub UserForm_Initialize()
Dim ctrl As Control, i As Byte
For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.CheckBox Then
        ReDim Preserve MesObjets(0 To i)
        Set MesObjets(i).monctrl = ctrl
        i = i + 1
    End If
Next ctrl
End Sub

A placer dans un module de classe nommé "Classe1"
Code:
Option Explicit
Public WithEvents monctrl As MSForms.CheckBox
Private Sub monctrl_Click()
Static b As Boolean
Dim ctrl As Control, c As Byte
If b = True Then Exit Sub
    If monctrl Then
        For Each ctrl In UserForm1.Controls
            If TypeOf ctrl Is MSForms.CheckBox And ctrl.Value = True Then c = c + 1
        Next ctrl
        If c > 6 Then
            b = True
            monctrl.Value = False
            b = False
        End If
    End If
End Sub

bon après midi
@+
 
Dernière édition:
Re : CheckBOX délimité le nbre de case coché

Merci à JP14 et Pierrot93 pour vos réponses,

J'ai utiliser la méthode de JP14 qui fonctionne à merveille !

Je sais que j'abuse mais auriez vous une idée pour ma deuxieme question :

Que le caption des caches cochés aille dans dans les colonnes de KàP ?

Merci
 
Re : CheckBOX délimité le nbre de case coché

re

avec ce que j'ai compris, j'ai modifié le code de mon module de classe ainsi, tu peux peut être t'en inspirer.

Code:
Option Explicit
Public WithEvents monctrl As MSForms.CheckBox
Private Sub monctrl_Click()
Static b As Boolean
Dim ctrl As Control, c As Byte
If b = True Then Exit Sub
    If monctrl Then
        For Each ctrl In UserForm1.Controls
            If TypeOf ctrl Is MSForms.CheckBox And ctrl.Value = True Then
                c = c + 1
                If c < 7 Then Cells(1, 10 + c).Value = ctrl.Caption
            End If
        Next ctrl
        If c > 6 Then
            b = True
            monctrl.Value = False
            b = False
        End If
    End If
End Sub

bonne soirée.
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

T
Réponses
2
Affichages
937
T
T
Réponses
6
Affichages
2 K
thierry.bayard
T
B
Réponses
7
Affichages
13 K
benito
B
M
Réponses
0
Affichages
2 K
MARGAR
M
T
Réponses
22
Affichages
6 K
Thibault LB
T
Retour