Bonjour tout le monde,
je ne sais comment masquer un connecteur quand la valeur n'est pas correcte, j'ai mis en code vba pour afficher mais pour masquer je ne sais pas le faire, si quelqu'un peut m'aider.
Shapes("Connecteur droit 2").Visible = [B5] = "F"
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [B5]) Is Nothing Then
ActiveSheet.Shapes("Essai").Visible = [B5] = "F"
End If
Fin:
Application.ScreenUpdating = True
End Sub
Bonjour.
En principe la propriété Visible d'un objet permet aussi bien de le masquer que de l'afficher selon que l'expression affectée est False ou True.
Bonjour.
En principe la propriété Visible d'un objet permet aussi bien de le masquer que de l'afficher selon que l'expression affectée est False ou True.
Je suis fondé à supposer que c'est parce que l'instruction n'a pas d'occasion de s'exécuter. Est elle bien écrite dans une Private Sub Worksheet_Change ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaShape As Shape
Set MaShape = ActiveSheet.Shapes("Connecteur droit 2")
If [B5] = "F" Then
MaShape.Fill.Visible = True
MaShape.Line.Visible = True
Else
MaShape.Fill.Visible = False
MaShape.Line.Visible = False
End If
Set MaShape = Nothing
End Sub
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [B5]) Is Nothing Then
ActiveSheet.Shapes("Essai").Visible = [B5] = "F"
End If
Fin:
Application.ScreenUpdating = True
End Sub
Rebonjour le fil,
avec le code de Sylvanu, si on sélectionne plusieurs cellules dont B4 et qu'on efface la forme reste visible.
Je supprimerai la ligne
Si, comme le demande @jurassic pork , toutes les shapes sont concernées :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaShape As Shape
For Each MaShape In ActiveSheet.Shapes
If [B5] = "F" Then
MaShape.Visible = True
Else
MaShape.Visible = False
End If
Next MaShape
Set MaShape = Nothing
End Sub
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [B5]) Is Nothing Then
ActiveSheet.Shapes("Essai").Visible = [B5] = "F"
End If
Fin:
Application.ScreenUpdating = True
End Sub