J'essaie d'utiliser une clause IF pour déterminer si ma case à cocher, nommée "Case à cocher 1", est cochée ou non, pour une utilisation ultérieure dans mon programme.
Mon code actuel:
Sub Button167_Click()
If ActiveSheet.Shapes("Check Box 1") = True Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
Cela ne semble pas fonctionner, mais le débogage me dit qu'il y a un problème avec le
ActiveSheet.Shapes("Check Box 1")
Cependant, je sais que ce code fonctionne (même s'il sert un objectif différent):
ActiveSheet.Shapes("Check Box 1").Select
With Selection
.Value = xlOn
EDIT: Si plus d'informations sont nécessaires, Mes cases à cocher (il y en a 200 sur ma page), se trouvent dans la feuille1, sous le nom de "Demande". Et chaque case à cocher a le même nom formaté de "case à cocher ...".
Toute aide serait appréciée. Merci
Sub Button167_Click()
If ThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
1 est coché, -4146 n'est pas coché, 2 est mélangé (case grise)
C'est ce que vous essayez?
Sub Sample()
Dim cb As Shape
Set cb = ActiveSheet.Shapes("Check Box 1")
If cb.OLEFormat.Object.Value = 1 Then
MsgBox "Checkbox is Checked"
Else
MsgBox "Checkbox is not Checked"
End If
End Sub
Remplacez Activesheet
par le nom de feuille approprié. Remplacez également Check Box 1
avec le nom de la case appropriée.
En s'appuyant sur précédentréponses , vous pouvez tirer parti du fait que True
est -1 et False
est 0 et raccourcir votre code comme ceci :
Sub Button167_Click()
Range("Y12").Value = _
Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0)
End Sub
Si la case est cochée, .Value
= 1.
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
renvoie True
.
L'application de la fonction Abs
convertit True
en 1
.
Si la case n'est pas cochée, .Value
= -4146.
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
renvoie False
.
L'application de la fonction Abs
convertit False
en 0
.
Il semble que dans le code macro VBA pour un contrôle de case à cocher ActiveX que vous utilisez
If (ActiveSheet.OLEObjects ("CheckBox1"). Object.Value = True)
et pour un contrôle de case à cocher Formulaire que vous utilisez
If (ActiveSheet.Shapes ("CheckBox1"). OLEFormat.Object.Value = 1)