Récuperer une valeur de cellule pour un fonction IF

Bonjour,

Voici mon problème en résumé:

Je souhaite afficher ou cacher des formes en fonction de la valeur d'une cellule A30 ( valeur numérique de 1 a 12).

J'ai donc taper le code ci dessous :

Ce la fonctionne bien si je rentre une valeur directement dans la cellule A30.

Maintenant dans cette cellule A30 je souhaite récupérer le résultat d'une fonction SI qui est aussi une valeur de 1 a 12.

La valeur afficher est ok de 1 a 12 mais ca ne marche plus

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("A30").Value = "1" Then

ActiveSheet.Shapes("lune 1").Visible = True

Else

ActiveSheet.Shapes("lune 1").Visible = False

End If

If Range("A30").Value = "2" Then

ActiveSheet.Shapes("lune 2").Visible = True

Else

ActiveSheet.Shapes("lune 2").Visible = False

End If

Je vous joint mon fichier :

Le principe :

on coche sur le rond de gauche une case

La cellule A28 renvoie une valeur entre 1 et 12 en fonction de la case coché.

=> un croissant devrait s'afficher sur le rond de droite en fonction de la valeur de la cellule A28 mais ce nest pas le cas.

Dans le code si je remplace A30 par A28 ca ne marche pas

Merci d'avance pour votre aide

Bonjour,

avec :

If Range("A30").Value = "1"

tu recherches le caractère "1" et non le nombre 1

Ecrire :

If Range("A30").Value = 1

eric

Merci eriiic pour ta réponse et ta rapidité.

J'ai modifier comme tu me la dit :

If Range("A30").Value = 1 a la place de If Range("A30").Value = "1"

mais ca ne fonctionne pas .

Si dans A30 je met une valeur sa focntionne il m'affiche la forme en fonction de la valeur

si je met ma formule en A30 : =SI(ESTERREUR(RECHERCHEV(VRAI;position;2;FAUX));"";RECHERCHEV(VRAI;position;2;FAUX))

Le résultat afficher en A30 et le bon par contre le code pour afficher la forme correspondante ne marche pas.

Je n'avais pas ouvert ton fichier et répondu un peu vite.

Une formule ré-évaluée ne déclenche pas d'évènement Change.

Il faut utiliser Calculate.

Et tu peux améliorer un peu ton code :

Private Sub Worksheet_Calculate()
    Dim i As Long
    For i = 1 To 12
        ActiveSheet.Shapes("lune " & i).Visible = [A30] = i
    Next i
End Sub

eric

Merci eriiic.

Non seulement ça marche mais je suis bleffé par le peu de ligne que tu a utilisé

BRAVO.

PS:

Je ne comprend pas ta réponse qui explique pourquoi ça ne fonctionnait pas : Une formule ré-évaluée ne déclenche pas d'évènement Change

Tu utilisais l'évènement Change qui est déclenché lorsqu'il y a une saisie dans une cellule.

Si tu y mets une formule il n'est pas déclenché si un des paramètres évolue et change le résultat.

Il faut soit récupérer l'évènement Change sur la cellule du paramètre (si tu le changes manuellement), soit intercepter au niveau de Calculate (recalcul de la feuille).

eric

Merci pour explication , cette fois j'ai compris mon erreur

Rechercher des sujets similaires à "recuperer valeur fonction"