Masquer / Afficher plusieurs objets à la fois

Bonjour,

J'ai trouvé le code suivant qui permet de masquer / afficher UN objet :

Sub Show_hide_objets()

If ActiveSheet.Shapes("Rectangle 3").Visible = True Then
ActiveSheet.Shapes("Rectangle 3").Visible = False
Else: ActiveSheet.Shapes("Rectangle 3").Visible = True
End If

End Sub

Comment faire si l'on veut en masquer plusieurs d'un coup ?? (exemple : rectangle 3, rectangle 4, rectangle 5, ...)

Merci !

Bonjour,

Tu peux utiliser ce code :

Sub Show_hide_objets()
    ActiveSheet.Shapes("Rectangle 1").Visible = Not (ActiveSheet.Shapes("Rectangle 1").Visible)
    ActiveSheet.Shapes("Rectangle 2").Visible = Not (ActiveSheet.Shapes("Rectangle 2").Visible)
    ActiveSheet.Shapes("Rectangle 3").Visible = Not (ActiveSheet.Shapes("Rectangle 3").Visible)
    '...
End Sub

Bonjour,

si tes objets sont des "rectangle " :

Sub Show_hide_objets()
For i = 1 To ActiveSheet.Shapes.Count
If ActiveSheet.Shapes("Rectangle " & i).Visible = True Then
ActiveSheet.Shapes("Rectangle " & i).Visible = False
Else: ActiveSheet.Shapes("Rectangle " & i).Visible = True
End If
Next i
End Sub

P.

Merci à tous les deux pour votre aide précieuse !

@oyobrans : plutôt que réécrire x fois la commande, j'espérais pouvoir faire une sélection du genre ("rectangle 1", "rectangle 2", "...") mais ça ne semble pas fonctionner pas avec ActiveSheet.Shapes j'ai l'impression ?

@patrick : effectivement je n'ai que des rectangles et ta solution fonctionne parfaitement dans ce cas de figure, je t'en remercie vivement. Y-a-t il par curiosité un moyen de renseigner dans une seule commande tous les objets que l'on souhaite masquer ? (cf. ma réponse ci-dessus à oyobrans).

++

Oui on sait les cacher

For Each S In ActiveSheet.Shapes

S.Visible = True

Next S

Merci pour cette réponse Patrick mais ma question portait plus précisément sur la bonne syntaxe pour pouvoir englober dans une seule commande les objets que je souhaite masquer, et pas masquer tous les objets :

En clair plutôt que ActiveSheet.Shapes("Rectangle " & i)

Est il possible d'écrire quelque chose comme ActiveSheet.Shapes("Rectangle 1","Rectangle 5","Rectangle 6") => on ne masque que ces 3 objets et pas les autres ?

Edit : ActiveSheet.Shapes("Rectangle 1","Rectangle 5","Rectangle 6") => évidemment cette syntaxe ne fonctionne pas

Oui

Sub MontrerShapes()
Dim shArray, i
shArray = Array("rectangle 3", "rectangle 4", "rectangle 5")
   With ActiveSheet
   For i = 0 To UBound(shArray)
      .Shapes(shArray(i)).Visible = False
   Next i
    End With
End Sub

Génial

J'ai modifié ta proposition pour pouvoir alterner masquer / afficher comme suit

Sub MontrerShapes()
Dim shArray, i
shArray = Array("rectangle 3", "rectangle 4", "rectangle 5")
   With ActiveSheet
   For i = 0 To UBound(shArray)
   If .Shapes(shArray(i)).Visible = True Then
      .Shapes(shArray(i)).Visible = False
   Else: .Shapes(shArray(i)).Visible = True
   End If
   Next i
    End With
End Sub

Un poil plus court avec un "IIF"

Sub MontrerShapes()

Dim shArray, i

shArray = Array("rectangle 3", "rectangle 4", "rectangle 5")

With ActiveSheet

For i = 0 To UBound(shArray)

voir = IIf(.Shapes(shArray(i)).Visible, True, False)

If voir Then .Shapes(shArray(i)).Visible = False Else .Shapes(shArray(i)).Visible = True

Next i

End With

End Sub

Wouah

Bravo et merci

Rechercher des sujets similaires à "masquer afficher objets fois"