VBA faire disparaître les commandes macro sous condition

Résolu
Gilles.DR315 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Gilles.DR315 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je vous explique mon problème.
En feuil1 à la cellule D20 j'ai le choix via liste déroulante : OUI / NON / ""

J'ai deux commandes macro qui renvoi chacune vers deux autres feuilles du classeur.

J'arrive à les faire permuter en affichage OUI / NON

Par :

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D20") = "NON" Then
ActiveSheet.Shapes("Pentagone 22").Visible = True
ActiveSheet.Shapes("Pentagone 20").Visible = False
Else
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = True
End If
If Range("D20") <> "NON" Then
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = True
Else
ActiveSheet.Shapes("Pentagone 22").Visible = True
ActiveSheet.Shapes("Pentagone 20").Visible = False
End If
End Sub

Mais ce que je cherche c'est à les faire disparaître tout les deux quand la cellule D20 est vide. Range("D20") = ""
Ceci afin de forcer l'utilisateur à choisir. avant de continuer.
Si c'est pas possible techniquement à cause d'une cellule avec Liste
Alors faire disparaître les deux si Range("D15") = "" (D15 est en format monétaire)

Merci d'avance de votre aide.
Cdt



A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D20") = "NON" Then
ActiveSheet.Shapes("Pentagone 22").Visible = True
ActiveSheet.Shapes("Pentagone 20").Visible = False
ElseIf Range("D20") = "OUI" Then
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = True
ElseIf Range("D20") = "" Then 'Autre
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = False
End If
End Sub
0
Gilles.DR315 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Merci pour le ElseIf

Maintenant çà marche. Il fallait quelques parenthèses.
et le tour est joué

Cdt

If Range("D20") = "" Then
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = False
ElseIf (Range("D20") <> "NON" And Range("D15") <> "") Then
ActiveSheet.Shapes("Pentagone 22").Visible = False
ActiveSheet.Shapes("Pentagone 20").Visible = True
ElseIf (Range("D20") = "NON" And Range("D15") <> "") Then
ActiveSheet.Shapes("Pentagone 22").Visible = True
ActiveSheet.Shapes("Pentagone 20").Visible = False
End If
End Sub
0