Afficher une forme sous conditions

Bonjour,

J'aimerais faire quelque chose qui me parait très simple, pourtant mon code ne marche pas..

Je souhaiterais simplement que si une case contient par exemple le mot "cookie", une forme (un simple rectangle blanc,, appelé "Rectangle 6" s'affiche, et que dans le cas contraire il ne s'affiche pas..

Sub CACHE()

If Range("D35") = "Collectivité" Then

ActiveSheet.Shapes("Rectangle 6").Visible = True

Else

ActiveSheet.Shapes("Rectangle 6").Visible = False

End If

End Sub

Quand je relie la macro au rectangle, si je marque "Collectivité", ce dernier reste présent, mais si je met autre chose et que je clique sur ce rectangle, il disparaît et rien n'y fais, impossible de le faire réapparaître même si je remet "Collectivité"..

Si quelqu'un a une solution je suis preneur

Merci d'avance, cordialement.

Bonjour,

Besoin de voir ton fichier avec le code.

Le rectangle apparaît en feuille "FEUILLE_CONTRAT".


J'ai du supprimer une feuille car infos confidentielles, la cellule ou la valeur est a vérifier est la D35.

Bonjour,

Il est évident que si tu attaches une macro au Rectangle, une fois qu'il n'est plus visible tu ne peux plus cliquer dessus !

Il faut une macro qui réagisse aux changements dans D35 :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells(1, 1).Address = "$D$35" Then
        Me.Shapes("Rectangle 6").Visible = (Target.Cells(1, 1) = "Collectivité")
    End If
End Sub

A mettre dans le module de la feuille.

Cordialement.

Merci pour votre réponse, cependant il ne se passe rien, il est toujours affiché et ne se cache jamais..


En relisant pour essayer de comprendre pourquoi cela ne marche pas, j'ai peut-être mon hypothèse même si je peux pas prétendre savoir vu mon niveau en VBA..

A aucun moment il est écit = true/= false concernant l'affiche du rectangle, ce dernier est dépendant de "collectivité" mais n'indique pas si il faut l'afficher ou non, c'est ce que j'en comprends en tout cas..

MFerrand a écrit :

Bonjour,

Il est évident que si tu attaches une macro au Rectangle, une fois qu'il n'est plus visible tu ne peux plus cliquer dessus !

Il faut une macro qui réagisse aux changements dans D35 :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells(1, 1).Address = "$D$35" Then
        Me.Shapes("Rectangle 6").Visible = (Target.Cells(1, 1) = "Collectivité")
    End If
End Sub

A mettre dans le module de la feuille.

Cordialement.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells(1, 1).D35 = "Collectivité" Then

ActiveSheet.Shapes("Rectangle 3").Visible = True

Else

ActiveSheet.Shapes("Rectangle 3").Visible = False

End If

End Sub

Je pensais à cela mais ca ne fonctionne pas non plus..

La proc que j'ai fournie fonctionne !

Il s'agit que tu ne l'esquintes pas en la transformant de façon incohérente !!!

Quand on ignore comment faire, on vérifie la syntaxe dans l'aide et on ne modifie pas à tort et à travers.

MFerrand a écrit :

La proc que j'ai fournie fonctionne !

Il s'agit que tu ne l'esquintes pas en la transformant de façon incohérente !!!

Quand on ignore comment faire, on vérifie la syntaxe dans l'aide et on ne modifie pas à tort et à travers.

Ah je viens enfin de comprendre d'ou venait le problème sur ma feuille

En effet sur ma feuille la valeur en D35 n'est pas manuscrite mais est importée d'une autre feuille sous la forme :

=SIERREUR(INDIRECT("COMPILDATA!AJ"&$A$1);"")

Quand j'écris à la main "Collectivité" ou "Régie", le rectangle s'affiche et se cache correctement, mais quand je remet la formule ca ne fonctionne plus.. Sauriez vous comment y remédier ?

Si tu ne poses pas la bonne question, tu n'as pas la bonne réponse !

Tu mets la proc. Change sur la feuille source du changement indiquée par ta formule, et tu cibles la cellule qui change : AJ ?

Quelques modifs à y faire... mais les éléments étaient absents de ton classeur !

Rechercher des sujets similaires à "afficher forme conditions"