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

Comment executer une boucle "for each" sur checkbox dans frm

5 réponses
Avatar
jhonna63
Comment écrire une procédure afin d'éxécuter une boucle for each ( ou for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox) situés dans
une feuille frm, dont le but est de vérifier si leur valeur est "true" ou
"false" ?

5 réponses

Avatar
Gérard Ducouret
Bonjour,

Si tous les checkboxes ont un nom commençant par "checkbox", j'essaierai:

Sub CB()
Dim CB As Control

For Each CB In UserForm1.Controls
If Left(CB.Name, 8) = "CheckBox" Then
Debug.Print CB.Name & ":" & CB.Value
End If
Next
End Sub

Gérard Ducouret

"jhonna63" a écrit dans le message de
news:
Comment écrire une procédure afin d'éxécuter une boucle for each ( ou for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox) situés
dans
une feuille frm, dont le but est de vérifier si leur valeur est "true" ou
"false" ?


Avatar
jhonna63
Merci, cela marche comme suis:
nb: la procédure commence en cliquant sur un bouton de commande
les cases à cocher commencent toutes par "box"

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If Left(CB.Name, 3) = "box" Then
VERIF = CB.Value
End If
Next

End Sub

deux questions:
pourquoi l'ordre de vérification des controles ne suit pas les "tabindex";
est-il possible de ne faire la boucle que sur les "checkbox" ou suis-je trop
perfectionniste?



Comment écrire une procédure afin d'éxécuter une boucle for each ( ou for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox) situés dans
une feuille frm, dont le but est de vérifier si leur valeur est "true" ou
"false" ?


Avatar
Gérard Ducouret
les cases à cocher commencent toutes par "box" :
Vous utilisez probablement la version anglaise?



Dans le For Each il est possible spécifier "CheckBox"
Mais à l'intérieur de la boucle, je n'ai pas truvé le moyen de tester
précisément sur la nature"checkbox" ;-(
Moi aussi je suis perfectionniste et pas très satisfait....
je chercherai dès que j'aurai le temps.

Cordialement,

Gérard Ducouret



"jhonna63" a écrit dans le message de
news:
Merci, cela marche comme suis:
nb: la procédure commence en cliquant sur un bouton de commande
les cases à cocher commencent toutes par "box"

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If Left(CB.Name, 3) = "box" Then
VERIF = CB.Value
End If
Next

End Sub

deux questions:
pourquoi l'ordre de vérification des controles ne suit pas les "tabindex";
est-il possible de ne faire la boucle que sur les "checkbox" ou suis-je
trop
perfectionniste?



Comment écrire une procédure afin d'éxécuter une boucle for each ( ou for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox) situés
dans
une feuille frm, dont le but est de vérifier si leur valeur est "true" ou
"false" ?




Avatar
jhonna63
Bonjour,
C'est moi qui est renommé les cases à cocher en "box" !
J'en ai 36, et pour simplifier l'écriture du code j'en ai raccourci le nom,
ce qui ne change en rien le control checkbox en lui-même...
Pour ce qui est de la solution en voici une qui me satisfait en partie:
NB: VERIF ne sert qu'à controler le nombre de cases que j'ai coché pour
vérifier le bon fonctionnement du code.

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If TypeOf CB Is MSForms.CheckBox Then
If CB.Value = True Then
VERIF = VERIF + 1
End If
End If
Next
End Sub

J'aurais aimé (cerise sur le gâteau) concaténer les deux expressions "if
typeof" et "if CB.value" en une seule; en utilisant l'opérateur "And" par
exemple mais cela ne marche pas...
Si vous avez une idée...


les cases à cocher commencent toutes par "box" :
Vous utilisez probablement la version anglaise?



Dans le For Each il est possible spécifier "CheckBox"
Mais à l'intérieur de la boucle, je n'ai pas truvé le moyen de tester
précisément sur la nature"checkbox" ;-(
Moi aussi je suis perfectionniste et pas très satisfait....
je chercherai dès que j'aurai le temps.

Cordialement,

Gérard Ducouret



"jhonna63" a écrit dans le message de
news:
Merci, cela marche comme suis:
nb: la procédure commence en cliquant sur un bouton de commande
les cases à cocher commencent toutes par "box"

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If Left(CB.Name, 3) = "box" Then
VERIF = CB.Value
End If
Next

End Sub

deux questions:
pourquoi l'ordre de vérification des controles ne suit pas les "tabindex";
est-il possible de ne faire la boucle que sur les "checkbox" ou suis-je
trop
perfectionniste?



Comment écrire une procédure afin d'éxécuter une boucle for each ( ou for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox) situés
dans
une feuille frm, dont le but est de vérifier si leur valeur est "true" ou
"false" ?









Avatar
Gérard Ducouret
Bonsoir,
Pour moi, la condition suivante marche bien:

If TypeOf CB Is MSForms.CheckBox And CB.Value = True Then
VERIF = VERIF + 1
End If

Gérard Ducouret

"jhonna63" a écrit dans le message de
news:
Bonjour,
C'est moi qui est renommé les cases à cocher en "box" !
J'en ai 36, et pour simplifier l'écriture du code j'en ai raccourci le
nom,
ce qui ne change en rien le control checkbox en lui-même...
Pour ce qui est de la solution en voici une qui me satisfait en partie:
NB: VERIF ne sert qu'à controler le nombre de cases que j'ai coché pour
vérifier le bon fonctionnement du code.

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If TypeOf CB Is MSForms.CheckBox Then
If CB.Value = True Then
VERIF = VERIF + 1
End If
End If
Next
End Sub

J'aurais aimé (cerise sur le gâteau) concaténer les deux expressions "if
typeof" et "if CB.value" en une seule; en utilisant l'opérateur "And" par
exemple mais cela ne marche pas...
Si vous avez une idée...


les cases à cocher commencent toutes par "box" :
Vous utilisez probablement la version anglaise?



Dans le For Each il est possible spécifier "CheckBox"
Mais à l'intérieur de la boucle, je n'ai pas truvé le moyen de tester
précisément sur la nature"checkbox" ;-(
Moi aussi je suis perfectionniste et pas très satisfait....
je chercherai dès que j'aurai le temps.

Cordialement,

Gérard Ducouret



"jhonna63" a écrit dans le message
de
news:
Merci, cela marche comme suis:
nb: la procédure commence en cliquant sur un bouton de commande
les cases à cocher commencent toutes par "box"

Private Sub cmdafficher_Click()
Dim VERIF
Dim CB As Control

For Each CB In frmchoix.Controls
If Left(CB.Name, 3) = "box" Then
VERIF = CB.Value
End If
Next

End Sub

deux questions:
pourquoi l'ordre de vérification des controles ne suit pas les
"tabindex";
est-il possible de ne faire la boucle que sur les "checkbox" ou suis-je
trop
perfectionniste?



Comment écrire une procédure afin d'éxécuter une boucle for each ( ou
for
next de 0 à 35) sur un ensemble (36) de cases à cocher (checkbox)
situés
dans
une feuille frm, dont le but est de vérifier si leur valeur est "true"
ou
"false" ?