Checkbox tableau vba excel
Résolu/Fermé
A voir également:
- Checkbox tableau vba excel
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Liste déroulante excel - Guide
- Tableau ascii - Guide
- Tableau word - Guide
6 réponses
bonjour,
je crois avoir trouvé
CtlChkBox.Name retourne le nom du controle
CtlChkBox.Object retourne la valeur True si coché, sinon False
exemple:
Private Sub CommandButton1_Click()
Dim CtlChkBox As OLEObject
For Each CtlChkBox In ActiveSheet.OLEObjects
If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
End If
Next CtlChkBox
End Sub
Salut
je crois avoir trouvé
CtlChkBox.Name retourne le nom du controle
CtlChkBox.Object retourne la valeur True si coché, sinon False
exemple:
Private Sub CommandButton1_Click()
Dim CtlChkBox As OLEObject
For Each CtlChkBox In ActiveSheet.OLEObjects
If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
End If
Next CtlChkBox
End Sub
Salut
Vous êtes énorme Merci beaucoup j'ai une message Box qui apparait en m'indiquant le résultat de chaque checkbox.
Maintenant partie plus délicate comprende le code.
Maintenant partie plus délicate comprende le code.
Il faut maintenant récuperer le nom du checkbox dans une variable et la valeur dans une autre variable
a la place de
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
ecrire
NomChkBox = CtlChkBox.Name
ValChkBox = CtlChkBox.Object
et faire quelque chose en fonction du nom et/ou de la valeur.
if NomChkBox="CheckBox1" then ...
ou
if ValChkBox = True then ...
a la place de
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
ecrire
NomChkBox = CtlChkBox.Name
ValChkBox = CtlChkBox.Object
et faire quelque chose en fonction du nom et/ou de la valeur.
if NomChkBox="CheckBox1" then ...
ou
if ValChkBox = True then ...
moi ce que je suis en train de faire c'est les mettres dans un tableau :
Dim CtlChkBox As OLEObject
Dim tabchk(2, 100)
Dim tabchk2(2, 100)
Dim tabchk3(2, 100)
Dim i As Integer
i = 0
For Each CtlChkBox In ActiveSheet.OLEObjects
If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
i = i + 1
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
If CtlChkBox.Object < 101 Then
tabchk(1, i) = CtlChkBox.Name
tabchk(2, i) = CtlChkBox.Object
ElseIf CtlChkBox.Object > 100 And CtlChkBox.Object < 201 Then
tabchk2(1, i) = CtlChkBox.Name
tabchk2(2, i) = CtlChkBox.Object
ElseIf CtlChkBox.Object > 200 And CtlChkBox.Object < 301 Then
tabchk3(1, i) = CtlChkBox.Name
tabchk3(2, i) = CtlChkBox.Object
End If
Next CtlChkBox
Dim CtlChkBox As OLEObject
Dim tabchk(2, 100)
Dim tabchk2(2, 100)
Dim tabchk3(2, 100)
Dim i As Integer
i = 0
For Each CtlChkBox In ActiveSheet.OLEObjects
If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
i = i + 1
MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
If CtlChkBox.Object < 101 Then
tabchk(1, i) = CtlChkBox.Name
tabchk(2, i) = CtlChkBox.Object
ElseIf CtlChkBox.Object > 100 And CtlChkBox.Object < 201 Then
tabchk2(1, i) = CtlChkBox.Name
tabchk2(2, i) = CtlChkBox.Object
ElseIf CtlChkBox.Object > 200 And CtlChkBox.Object < 301 Then
tabchk3(1, i) = CtlChkBox.Name
tabchk3(2, i) = CtlChkBox.Object
End If
Next CtlChkBox
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pour indication est ce que tu aurais le début d'une explication pour me dire pourquoi il ne commence pas par me donner la checkbox1
Re,
Le pense que le balayage des controles se fait dans l'ordre de la création, mais je ne suis pas sur. En tout cas c'est ce que j'avais chez moi. Si tu as supprimé un controle pour le créer ensuite avec le meme nom, l'ordre a changé, ce qui expliquerait que la CheckBox1 ne soit pas listé en premier.
Le pense que le balayage des controles se fait dans l'ordre de la création, mais je ne suis pas sur. En tout cas c'est ce que j'avais chez moi. Si tu as supprimé un controle pour le créer ensuite avec le meme nom, l'ordre a changé, ce qui expliquerait que la CheckBox1 ne soit pas listé en premier.
2 avril 2008 à 15:52