Bonjour,
Tu alimentes ta variable "valeur" sur l'événement Click() de ta CheckBox mais tu affectes cette valeur (celle de la variable) à la cellule B1 sur l'événement Click() du CommandButton mais comme ta variable est déclarée dans la procédure Click() de la CheckBox, sa portée s'arrête une fois la procédure finie ! Il te faut la déclarer en tête de module afin que sa portée soit de niveau classeur donc, de cette façon :
Dim valeur As Integer '<--- déclarée en tête de module
Public Sub CheckBox1_Click()
If CheckBox1.Value = True Then
valeur = Workbooks("classeur1").Worksheets("feuil1").Range("A2").Value
Else
valeur = 0
End If
End Sub
Public Sub CommandButton1_Click()
Range("B1").Value = valeur
End Sub
Un bon conseil quand on apprend à programmer en VBA, c'est d'obliger la déclaration explicite des variables pour ça, tu fais menu "Outils"--->"Options..." dans l'onglet "Editeur" cocher la case "Déclaration des variables obligatoire" ce qui rajoute "Option Explicit" en tête de tous les modules (il te faut d'abords fermer Excel puis le ré-ouvrir pour l'avoir de façon automatique)
Si ça avait été le cas, au click du bouton tu aurais eu un message d'erreur "Variable non définie" avec "valeur" surlignée ce qui t'aurais probablement mis la puce à l'oreille