VBA faire disparaître les commandes macro sous condition

Résolu
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

2 réponses

  1. 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
    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