VBA faire disparaître les commandes macro sous condition

Résolu/Fermé
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - Modifié par Gilles.DR315 le 20/12/2013 à 22:13
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - 21 déc. 2013 à 15:29
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 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 707
Modifié par f894009 le 21/12/2013 à 09:39
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 samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 1
Modifié par Gilles.DR315 le 21/12/2013 à 15:29
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