[VBA] identifier une checkbox par un index
jeyjey44
-
7 avril 2009 à 18:57
jeyjey44 -
jeyjey44 -
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.
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.
A voir également:
- [VBA] identifier une checkbox par un index
- Index téléphonique - Guide
- Identifier appareil avec adresse mac - Guide
- Telecharger index - Télécharger - Gestion de fichiers
- Identifier un objet à partir d'une photo - Guide
- Identifier un numéro de gsm belgique ✓ - Forum Mobile
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
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
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
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.
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.