Afficher / Masquer une forme en fonction de

Krystel2903

XLDnaute Nouveau
Bonjour à tous,

Après de nombreuses recherches pour trouver une solution à mon problème et de nombreux essaies, je m'en remet à vous chères expert(e)s d'excel !

Voici la problématique (illustrée par un fichier d'exemple ci-joint) :

Je souhaiterais afficher ou masquer une forme contenant une macro en fonction du contenu ("oui" ou "non") d'une cellule présente sur une autre feuille que celle où les formes sont placées.
Sachant qu'il y a déjà un code présent (voir document joint) pour afficher ou non une feuille en fonction du résultat de cette même cellule.

J'ai déjà essayé ces 2 codes, que j'ai inscrit dans la Feuil1, mais cela ne fonctionne pas :
celui ci :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(R, [B5]) Is Nothing Then Exit Sub
Worksheets("Feuil2").Shapes("Restau int").Visible = R = "oui": Worksheets("Feuil2").Shapes("Restau ext").Visible = R = "non"
End Sub


et celui là :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(R, Range("B5") = "oui") Is Nothing Then
Worksheets(Feuil2).Shapes("Restau int").Visible = True
Else
Worksheets(Feuil2).Shapes("Restau ext").Visible
End If
If Intersect(R, Range("B5") = "non") Is Nothing Then
Worksheets(Feuil2).Shapes("Restau ext").Visible = True
Else
Worksheets(Feuil2).Shapes("Restau int").Visible = False
End If
End Sub



Pourriez-vous m'indiquer d'où vient le problème dans mes codes, ou m'indiquer quel code utiliser ??

Merci beaucoup d'avance !

Bonne journée,

Krystel2903
 

Pièces jointes

  • Exemple afficher masquer objet.xlsm
    20.2 KB · Affichages: 29

Paf

XLDnaute Barbatruc
Re : Afficher / Masquer une forme en fonction de

Bonjour Krystel2903

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Intersect(R, [B5]) Is Nothing Then Exit Sub
 Worksheets("Feuil2").Shapes("Restau int").Visible = R = "oui": Worksheets("Feuil2").Shapes("Restau ext").Visible = R =  "non"
End Sub

Dans ce code deux soucis:

- la cellule modifiée est Target, mais on teste R ( parce que dans le classeur on a R à la place de Target)
- la feuille du nom de Feuil2 n'existe pas. Feuil2 est le CodeName de cette feuille. utiliser Feuil2.Shapes(...

une proposition de modification du code de la feuille Question (codename Feuil1):

Code:
Private Sub Worksheet_Change(ByVal R As Range)
  If Intersect(R, [B5]) Is Nothing Then Exit Sub
  Feuil3.Visible = R = "oui": Feuil4.Visible = R = "non"
  Feuil2.Shapes("Restau int").Visible = R = "oui":  Feuil2.Shapes("Restau ext").Visible = R = "non"
End Sub

A+
 

Krystel2903

XLDnaute Nouveau
Re : Afficher / Masquer une forme en fonction de

Bonjour Krystel2903

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Intersect(R, [B5]) Is Nothing Then Exit Sub
 Worksheets("Feuil2").Shapes("Restau int").Visible = R = "oui": Worksheets("Feuil2").Shapes("Restau ext").Visible = R =  "non"
End Sub

Dans ce code deux soucis:

- la cellule modifiée est Target, mais on teste R ( parce que dans le classeur on a R à la place de Target)
- la feuille du nom de Feuil2 n'existe pas. Feuil2 est le CodeName de cette feuille. utiliser Feuil2.Shapes(...

une proposition de modification du code de la feuille Question (codename Feuil1):

Code:
Private Sub Worksheet_Change(ByVal R As Range)
  If Intersect(R, [B5]) Is Nothing Then Exit Sub
  Feuil3.Visible = R = "oui": Feuil4.Visible = R = "non"
  Feuil2.Shapes("Restau int").Visible = R = "oui":  Feuil2.Shapes("Restau ext").Visible = R = "non"
End Sub

A+


Bonjour Paf,

Merci beaucoup pour ton aide, cela fonctionne à merveille !!

Bonne journée :D
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet