[VBA] identifier une checkbox par un index

Fermé
jeyjey44 - 7 avril 2009 à 18:57
 jeyjey44 - 8 avril 2009 à 09:49
Bonjour,

Je travail sous excel VBA. J'ai sur une feuille plusieurs checkbox (checkbox1, checkbox2,.... jusqu'a 15).
j'aurais besoins de faire une boucle du genre :

For i = 1 to 15
if checkbox(i).value = True then
une action
end if
Next

C'est à dire repérer les checkbox par leur numéro (ou un index s'il est possible d'en définir un pour chaque checkbox). Mais je ne sais pas quelle est la syntaxe du code en gras.

Après quelques recherches j'avais trouvé ça :

worksheets("feuil1").controls("Checkbox" & i).value

mais ça ne marche pas.
Quelqu'un aurait-il une idée ?
parceque jusqu'ici je me débrouillait avec les forum pour trouver les astuces, mais là rien...

Merci.

2 réponses

incaout Messages postés 347 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 novembre 2012 74
7 avril 2009 à 20:16
Bonsoir,

Si tes cases à cocher sont directement dans la feuille excel, il faut utiliser ceci :

dim Feuil as worksheet
dim Ctrl


set Feuil = activeworksheet ou set Feuil = activeWorkbook.worksheets("nomdemafeuille")

For Each Ctrl In Feuil.OLEObjects
If TypeOf Ctrl.Object Is MSForms.CheckBox Then
if Ctrl.value = true then
select case (Ctrl.name)
case "nom1" : instruction

case "nom2" : instruction

end select
end if
end if
next Ctrl

PS : Chez moi, il s'agissait de bouton radio. A vérifier que le type est bien CheckBox. Bon courage

IC
2
Merci de ton aide.
Du coup j'ai utilisé une autre méthode, plus simple je dirais, qui est la suivante :

Sub BoucleCheckBox_V02()
Dim i As Byte

For i = 1 To 3
MsgBox ActiveSheet.OLEObjects("CheckBox" & i).Name & ": " & _
ActiveSheet.OLEObjects("CheckBox" & i).Object.Value
Next i
End Sub

(source https://excel.developpez.com/faq/?page=OleObject#BoucleOleObject)

Enfin juste cette ligne précisément, que j'ai insérée dans ma boucle :

ActiveSheet.OLEObjects("CheckBox" & i).Object.Value

Merci de t'être penché sur ma question.
2