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

Nombre automatique de checkbox cochés

4 réponses
Avatar
claudy
Bonjour...
Un userform, avec des checkbox(1 à 22) et un label, je n'arrive pas à
trouver le code qui me permettrait d'afficher dans ce label le nombre de
chekbox qui sont cochés, au fur et à mesure que l'on coche ou décoche ces
checkbox.

Dans le genre:
label1=sum(checkbox.values)

merci d'avance,
Claudy

4 réponses

Avatar
Mike
Bonjour

Il y a certainement plus simple et plus court mais au
moins ça marche:

Public nbre As Integer

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
nbre = nbre + 1
Else
End If
If CheckBox1.Value = False Then
nbre = nbre - 1
Else
End If
TextBox1.Value = nbre
End Sub

et on répète pour tout les checkboxs (ça là que ça devient
lourd), le résultat (nombre de cases cochées donc ayant la
valeur TRUE) s'inscrit en temps réel dans la Textbox

Bon Courage
Ciao

-----Message d'origine-----
Bonjour...
Un userform, avec des checkbox(1 à 22) et un label, je
n'arrive pas à

trouver le code qui me permettrait d'afficher dans ce
label le nombre de

chekbox qui sont cochés, au fur et à mesure que l'on
coche ou décoche ces

checkbox.

Dans le genre:
label1=sum(checkbox.values)

merci d'avance,
Claudy



.



Avatar
claudy
Bonsoir Mike...
comme tu dis c'est un peu lourd pour 22 checkbox
merci quand même,

N'y a t il pas plus léger ?
A+
Claudy

"Mike" a écrit dans le message de
news:2a3301c37ae4$79a3dca0$
Bonjour

Il y a certainement plus simple et plus court mais au
moins ça marche:

Public nbre As Integer

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
nbre = nbre + 1
Else
End If
If CheckBox1.Value = False Then
nbre = nbre - 1
Else
End If
TextBox1.Value = nbre
End Sub

et on répète pour tout les checkboxs (ça là que ça devient
lourd), le résultat (nombre de cases cochées donc ayant la
valeur TRUE) s'inscrit en temps réel dans la Textbox

Bon Courage
Ciao

-----Message d'origine-----
Bonjour...
Un userform, avec des checkbox(1 à 22) et un label, je
n'arrive pas à

trouver le code qui me permettrait d'afficher dans ce
label le nombre de

chekbox qui sont cochés, au fur et à mesure que l'on
coche ou décoche ces

checkbox.

Dans le genre:
label1=sum(checkbox.values)

merci d'avance,
Claudy



.



Avatar
Hervé
Salut Claudy,
Il te faut utiliser un module de classe afin d'avoir un évennement commun.
Attention au nom de la form dans le code elle s'appelle UserForm1, adapte.
---------------------------------------------------
A mettre dans le module de classe et le nommer ClsCheckBox (propriété Name
en bas à gauche) :

Public WithEvents GroupeChk As MSForms.CheckBox

Private Sub GroupeChk_Click()
Dim Ctrl As Control
Dim I As Integer
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "CheckBox" Then
If Ctrl.Value = True Then
I = I + 1
End If
End If
Next Ctrl
UserForm1.Label1.Caption = I
Set Ctrl = Nothing
End Sub

---------------------------------------------------
A mettre dans le module de ta form :

Dim Chk() As New ClsCheckBox 'A mettre en tête de module

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
Set Ctrl = Nothing
End Sub

Hervé.

"claudy" a écrit dans le message news:
3f649cc9$0$24171$
Bonjour...
Un userform, avec des checkbox(1 à 22) et un label, je n'arrive pas à
trouver le code qui me permettrait d'afficher dans ce label le nombre de
chekbox qui sont cochés, au fur et à mesure que l'on coche ou décoche ces
checkbox.

Dans le genre:
label1=sum(checkbox.values)

merci d'avance,
Claudy





Avatar
claudy
Super...ça marche...
en bidouillant un peu:
C'était la première fois que je manipulais un module de classe!
Pour renommer le module de classe, il n'acceptait pas "ClsCheckBox", et j'ai
utilisé un autre nom, en adaptant!
Quelle est la différence entre un module de classe et un module normal?
Avez vous une adresse de site sur le sujet, avec des exemples?
Merci beaucoup,
Claudy.
"Hervé" a écrit dans le message de
news:
Salut Claudy,
Il te faut utiliser un module de classe afin d'avoir un évennement commun.
Attention au nom de la form dans le code elle s'appelle UserForm1, adapte.
---------------------------------------------------
A mettre dans le module de classe et le nommer ClsCheckBox (propriété Name
en bas à gauche) :

Public WithEvents GroupeChk As MSForms.CheckBox

Private Sub GroupeChk_Click()
Dim Ctrl As Control
Dim I As Integer
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "CheckBox" Then
If Ctrl.Value = True Then
I = I + 1
End If
End If
Next Ctrl
UserForm1.Label1.Caption = I
Set Ctrl = Nothing
End Sub

---------------------------------------------------
A mettre dans le module de ta form :

Dim Chk() As New ClsCheckBox 'A mettre en tête de module

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
Set Ctrl = Nothing
End Sub

Hervé.

"claudy" a écrit dans le message news:
3f649cc9$0$24171$
Bonjour...
Un userform, avec des checkbox(1 à 22) et un label, je n'arrive pas à
trouver le code qui me permettrait d'afficher dans ce label le nombre de
chekbox qui sont cochés, au fur et à mesure que l'on coche ou décoche
ces


checkbox.

Dans le genre:
label1=sum(checkbox.values)

merci d'avance,
Claudy