Case à cocher conditionnelle à un cellule

Bonjour,

Je tente de faire apparaître ou disparaître un case à cocher en fonction d'une cellule.

J'utilise la macro suivante:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

If Target.Address(0, 0) = "K60" And Target <> "" Then Shapes("Case à cocher 43").Visible = True '

If Target.Address(0, 0) = "K60" And Target = 0 Then Shapes("Case à cocher 43").Visible = False

End Sub

Cette macro fonctionne très bien en temps normal (cad que si j'entre manuellement dans la cellule K60 "1" la case à cocher apparaît et que si j'entre manuellement "0" dans la cellule K60, la case à cocher disparaît). Cependant, ma cellule K60 contient une formule "si" qui envoie comme réponse "1" ou "0" et pour une raison que j'ignore cette formule ne fait pas fonctionner la macro, malgré le fait que la formule renvoie le résultat "1" si vrai et "0" si faux.

Auriez-vous une solution?

Merci.

Bonjour Swande,

Est-ce que ta formule condition est écrite comme ça:

=Si(test...;"1";"0")

si c'est le cas les valeur "1" et "0" seront interprétées comme du texte et pas du numérique.

Cordialement.

Non, ma formule est écrite pour du numérique. Mon problème est de savoir pourquoi la macro ne fonctionne pas malgré le fait que ma cellule K60 peut seulement prendre la valeur 1 ou 0.

La fonction si ,ne renverrait elle pas une valeur arrondie?

on lit 1 dans la cellule (à l'écran) mais sa vraie valeur serait:,1,00xxxx.

apparement la macro n'est pas en cause.

voici un exemple de ce que j'essaie de faire de manière simplifiée

Bonsoir,

La modification d'une valeur affichée résultant d'une formule relève de l'évènement Calculate et ne déclenche pas l'évènement Change.

Cordialement.

Merci c'est logique, mais je suis pas vraiment familier avec l'évènement Calculate. Donc, voici mon nouveau code qui ne fonctionne pas (la cellule D5 contient une formule "si" qui renvoie la valeur 1 ou ""):

Private Sub Worksheet_Calculate()

On Error Resume Next

If Target.Address(0, 0) = "D5" And Target <> "" Then Shapes("Case à cocher 1").Visible = True '

If Target.Address(0, 0) = "D5" And Target = "" Then Shapes("Case à cocher 1").Visible = False

End Sub

Merci d'avance pour les suggestions

Re,

Tu utilises une variable (Target) qui n'existe pas dans cette procédure... Cela aurait dû t'alerter !

Tu peux simplement écrire :

With Shapes("Case à cocher 1")
   If [D5] = 1 Then
      .Visible = True 
   Else
      .Visible = False
   End If
End With

Maintenant si tu as une formule qui renvoie VRAI ou FAUX (valeur booléenne), tu pourrais te contenter de :

Shapes("Case à cocher 1").Visible = [D5]

Si tu rencontres d'autres difficultés, il arrive que pour ces contrôles de formulaires Excel soit fâché avec les noms français. Dans ce cas, essayer "CheckBox1".

Cordialement.

Bonjour

Une autre proposition

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("C5").Precedents, Target) Is Nothing Then
    Shapes("Case à cocher 1").Visible = Range("C5") = ""
  End If
End Sub

A voir dans le fichier : Affichage de C5 en fonction de 2 cellules

Merci de vos réponses, elles fonctionnent!

Voici celle que j'ai finalement utilisé:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If [C5] <> "" Then Shapes("Case à cocher 1").Visible = True '

If [C5] = "" Then Shapes("Case à cocher 1").Visible = False

End Sub

Cependant, ma fonction Ctrl Z ne fonctionne plus, savez-vous pourquoi?

Oui !

Ctrl+Z annule une opération annulable, c'est à dire réalisée par l'utilisateur.

Rechercher des sujets similaires à "case cocher conditionnelle"