J'ai plusieurs trait et rond(fait a partir de la barre d'outils dessin), je voudrais les masquer tous d'un coup quand je clique sur mon bouton qui active ma macro
J'arrive a en faire disparaitre un à la fois (voir fichier d'exemple joint), exemple :
Code:
Private Sub CommandButton2_Click()
Feuil1.Shapes("trait1").Visible = False
Feuil1.Shapes("trait2").Visible = False
Feuil1.Shapes("ellipse3").Visible = False
Feuil1.Shapes("rectangle4").Visible = False
End Sub
je voudrais pouvoir nommé un groupe de trait/rond/rectangle, pour ne pas avoir besoin de taper 4ligne, mais qu'une seul.
Dans mon fichier de travail, j'ai enormément de trait, il serais donc assez long et ennuyeux de les nommer un par un, et de faire une ligne pour chaque.
je sais pas si j'ai été clair. en gros je veux pouvoir nommer un groupe de "forme", pour n'avoir qu'une seul ligne dans ma macro (sur l'exemple).
juste au cas où, tu peux sélectionner toutes tes formes (cliquer desssus en maintenant le bouton CTRL enfoncé), puis clic droit / Menu Groupe / Grouper. Ceci te mets toutes tes formes dans un seul groupe.
voici un autre exemple, au cas ou tu voudrais cacher que certain shape
Sub Macro1()
For Each Sh In Feuil1.Shapes
Set x = Sh.OLEFormat.Object
Select Case TypeName(x)
Case "Line": Sh.Visible = False
Case "Oval": Sh.Visible = False
Case "Rectangle": Sh.Visible = False
End Select
Next
End Sub
ok merci sabzzz, la fonction grouper suffit pour ce que je souhaite faire pour l'instant.
Par contre est-il possible de cacher (via la macro toujour) aussi une plages de cellule de la meme manière que:
"Feuil1.Shapes("trait1").Visible = False"
si oui, par exemple une plage de cellules nommée "Tabl1" ça donnerais quoi ?
Sub Macro1()
For Each sh In Feuil1.Shapes
Set x = Application.Intersect(Range(sh.TopLeftCell.Address), Range("Tabl1"))
If Not x Is Nothing Then sh.Locked = False: sh.Placement = xlMoveAndSize
Range("Tabl1").EntireRow.Hidden = True
Next
End Sub
ou est ce que je vois si la propriété "Déplacer et dimentionner avec les cellules" est coché ou pas ?
La ligne "Feuil1.Range("Tabl1").Hidden = True" ne marche pas, j'ai l'erreur "impossible de définir la propriété Hidden de la classe range".
Ensuite
Code:
Sub Macro1()
For Each sh In Feuil1.Shapes
Set x = Application.Intersect(Range(sh.TopLeftCell.Address ), Range("Tabl1"))
If Not x Is Nothing Then sh.Locked = False: sh.Placement = xlMoveAndSize
Range("Tabl1").EntireRow.Hidden = True
Next
End Sub
ça me vire tout les ligne complète sur lesquel est défini ma plage. en plus sa mets 3 plombes mdr