checkbox value

R

raf

Guest
Salut à tous,

Supposons qu'une checkbox s'appelle "MaCheckBox". Si j'écris :

Msgbox Activesheet.MaCheckBox.Value

Ca marche. Mais j'aimerais pouvoir l'appeler au travers de son nom, avec un truc comme :

Msgbox Activesheet.Shapes("MaCheckBox").Value

car mon programme parcourt itérativement un ensemble de checkboxes dont je connais le nom.

Merci de votre aide,

Raf
 
@

@+Thierry

Guest
Bonsoir Raf, le Forum

Pas vraiment sûr d'avoir compris ta demande, mais voici un Code à mettre dans le Private Module de la Feuille contenant les CheckBoxes, qui devrait t'amuser au moins si il ne fait pas ton affaire...

Option Explicit

Sub CheckingCheckBox()
Dim CTRL As OLEObject
Dim MyTrue As String, MyFalse As String

For Each CTRL In Me.OLEObjects
If CTRL.progID = "Forms.CheckBox.1" Then
If CTRL.Object = True Then MyTrue = MyTrue & vbTab & CTRL.Name & vbCrLf
If CTRL.Object = False Then MyFalse = MyFalse & vbTab & CTRL.Name & vbCrLf
End If
Next

If MyFalse <> "" And MyTrue <> "" Then
MsgBox "Les Checkbox Suivantes Sont Cochée " & vbCrLf & MyTrue & _
"Les Checkbox Suivantes Ne Sont Pas Cochée " & vbCrLf & MyFalse
ElseIf MyFalse <> "" And MyTrue = "" Then
MsgBox "Toutes Checkbox Ne Sont Pas Cochée " & vbCrLf & MyFalse
ElseIf MyFalse = "" And MyTrue <> "" Then
MsgBox "Toutes Les Checkbox Sont Cochée " & vbCrLf & MyTrue
End If

End Sub


Bonne Soirée
@+Thierry
 
R

raf

Guest
Salut Thierry, et merci bcp pour ta réponse

Je réalise en me relisant que ma question était alambiquée ! En fait, je reçois périodiquement un classeur Excel (appelons le TOTO) contenant une 40aine de CheckBox. Chacune de ces CheckBoxes porte un nom spécifique, comme "check_new", "check_renewal", "check_legal", etc...

Moi, je veux récupèrer la valeur de ces checkboxes (True/False) à partir d'un programme situé dans mon classeur PERSONNEL qui prend le NOM de la checkbox en paramètre.

Par exemple, dans le programme suivant, j'aimerais que la variable CBOX contienne le nom de ma checkbox (ici, CBOX pourra valoir "check_renewal") :
...........
Cells(5, 10).Value = Workbooks("TOTO").Sheets("sheet1").CBOX.Value
...........

mais je ne sais comment dimensionner CBOX ni si la syntaxe est correcte !

Looooooooongue reformulation, donc.
 
R

raf

Guest
Et pour prolonger mon dernier mail, voilà ce que j'ai écrit à la lumière de ton code, mais ça me semble vraiment lourd pour si peu...

For Each obj In Workbooks("TOTO").Sheets("Sheet1").OLEObjects
If obj.ProgId = "Forms.CheckBox.1" Then
If obj.Object.Caption = "check_new" Then MsgBox obj.Object.Value
End If
Next

Raf
 
@

@+Thierry

Guest
Bonsoir Raf, le Forum

Ou je n'ai toujours rien compris à ta demande ou tu ne comprends rien à mes explications !

Bon tu essaies ceci :
Option Explicit

Sub TheTestForRaf()
Dim Obj As OLEObject
Dim i As Byte

Workbooks.Add
i = 1
For Each Obj In Workbooks("Toto.xls").Sheets("Sheet1").OLEObjects
If Obj.ProgId = "Forms.CheckBox.1" Then
With ActiveSheet
.Cells(i, 1) = Obj.Object.Caption
.Cells(i, 2) = Obj.Name
.Cells(i, 3) = Obj.Object.Value
End With
i = i + 1
End If
Next
End Sub

Ce code où qu'il soit placé, pour peu (of course) que tu aies une classeur "Toto.xls" ouvert contenant une feuille nommée "Sheet1"....

Sinon je ne comprends plus rien de rien !! et c'est moi qui suis lourd lol !!!

Bonne nuit
@+Thierry
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45