Bonjour
Si les 9 Checkbox sont dans un groupe de Contrôles ( de CheckBox1 à Checkbox9) faire une boucle de 1 à 9 .
A chaque tour de boucle tester si la CheckBox correspondante est cochée ou non et si oui augmenter un compteur de 1 .
A la fin afficher dans un Label la valeur du compteur .
Bonjour
Merci pour votre réponse.
Malheureusement je suis complètement perdue.
Pourriez vous me donner un exemple de code ? C'est la première fois que je travail avec des Contrôles.
Je vous remercie par avance
Bonjour,
une petite recherche sur Google et voilà:
https://excel-downloads.com/threads/calculer-le-nombre-de-checkbox-coches-dans-un-userform.216408/
Voici mon code. Je ne comprend pas pourquoi cette fenêtre d'erreur s'affiche .
Merci encore pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionMême avec le End if, j'ai un autre souci
supprime le With et le End With
j'ai encore un souci
Il manque le End If avant Le Next !!!!!!
Cela ne change tout de même rien !!!
Public Sub Comptage() Dim c As Integer Dim cb As Control c = 0 With UserForm1 For Each cb In .Controls If TypeOf cb Is MSForms.CheckBox And cb.Value = True Then c = c + 1: .TextBox1.Value = c Next cb End With End Sub
Tu remplaces Textbox 1 par le nom de ton textbox sans oublier le point avant
chez moi cela fonctionne sans problème:
Option Explicit Private Sub CommandButton1_Click() Comptage End Sub Public Sub Comptage() Dim c As Integer Dim cb As Control c = 0 With UserForm1 For Each cb In .Controls If TypeOf cb Is MSForms.CheckBox And cb.Value = True Then c = c + 1: .TextBox1.Value = c Next cb End With End Sub
Faire comme j'ai fait pour tester le code:
ouvrir un nouveau classeur
inserer un UserForm avec des CheckBox, un Bouton et une TextBox et mettre le code:
Option Explicit Private Sub CommandButton1_Click() Comptage End Sub Public Sub Comptage() Dim c As Integer Dim cb As Control c = 0 For Each cb In Controls If TypeOf cb Is MSForms.CheckBox And cb.Value = True Then c = c + 1: TextBox1.Value = c Else TextBox1.Value = c End If Next cb End Sub
voilà
Merci beaucoup pour votre aide. Le programme fonctionne désormais
Bonjour,
Sub Comptage() Dim i as integer Me.TextBox1.Value = 0 For i = 1 To 9 Me.TextBox1.Value = Me.TextBox1.Value + Abs(Me.Controls("CheckBox" & i).Value) Next End Sub
Salut à tous,
Ne peut-on pas partir sur un groupe de contrôl indéxé?
L'avantage serait de mettre à jour le label à chaque modification d'un check box avec l'événement "_click".
Je trouve ça plus simple, mais bon, c'est pas très pro...
PS: schieberlucie ne semble pas être en VBA, mais en VB6...
Donc, une form avec un label et un checkbox indéxé en (0)...
Private Sub Form_Load() Dim a As Long For a = 0 To 8 If a > 0 Then Load Me.Check(a): Me.Check(a).Visible = True Check(a).Caption = "Check" & a Check(a).Move 800, (Check(a).Height * a) + (25 * a) Next a End Sub Private Sub Check_Click(Index As Integer) Dim a As Long, b As Long b = 0 For a = 0 To 8 b = b + IIf(Check(a), 1, 0) Next a Label1.Caption = b End Sub
Bonjour,
Le iif est inutile !
Un booléen c'est True/False -1/0 {logique négative}
b = b + Abs(Check(a))
Salut dysorthographie,
A vrai dire, j'aime bien IIF, pour des problèmes de compatibilité de type, et aussi pour une meilleure visibilité dans le code.
Mais, ABS est très bien aussi dans notre cas. (que je n'utilise d'ailleur jamais...)
b = b - Cint(Check(a))