Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment masquer plusieurs objets

  • Initiateur de la discussion Initiateur de la discussion dent_de_sabre
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dent_de_sabre

Guest
Bonjour,
Nouveau sur ce forum, j'ai une question à tous les spécialistes excel et vba:

Je voudrais pouvoir créer une macro masquant automatiquement plusieurs objets dans une feuille excel spécifiée. J'ai apparement trouvé le bon code vba, ça doit être quelque chose du genre : activesheet.shapes("nombojet").visible=false/true mais voila le "nomobjet" me pose un problème !!!!!!

L'un d'entre-vous aurai-t'il une réponse, un exemple de code pour réaliser cette opération ????? Un pas à pas détaillé ????

S'il manque des infos, n'hésitez pas, j'essayerai d'être plus clair !!!! 😛

Merci d'avance
 
Re : Comment masquer plusieurs objets

Salut,

Attention, chaque objet porte un nom et un index. Tout comme tout ce qui est dans une collection, selon les termes Excellien.

Si tu fais:
For x = 1 To 5
ActiveSheet.Shapes(x).Visible = false
Next

Tu va voir disparaitre les objets d'index 1 à 5, mais pas ceux que tu aura nommé "1", "2", "3", "4" et "5". Ou alors, coup de chance.

Si tu veux masquer tout les objets, c'est la meilleure solution, à ma connaissance.

Mais si tu veux n'en masquer que certain, je pense qu'il vaux mieux passer par un tableau de nom d'objet.

Dim Tab(Nombre d'objet) as String
Tab(1)="Nom1"
Tab(2)="Nom2"
Tab(3)="Nom3"
...
For x = 1 To Nombre d'objet
ActiveSheet.Shapes(Tab(x)).Visible = false
Next
 
Re : Comment masquer plusieurs objets

Merci pour ces conseils.

J'essaye ce soir et vous dis si ça marche.

Etant novice dans vba et sans formation spéciale, j'espère ne pas avoir fait d'erreurs dans les termes informatiques. Dans mon cas, j'ai créé via excel plusieurs zones de texte, mais je n'arrive pas à les retrouver dans vba (pas de nom, ni d'index). D'ou mon pb pour les nommer dans ma macro !!!!!

Bref, j'essaye avec un tableau de noms d'objet
 
Re : Comment masquer plusieurs objets

Re-bonsoir,

Alors je viens d'essayer ces formules.

1. J'arrive à masquer et faire réapparaitre les objets via la même macro à l'aide de la formule suivante:
Sub Masquer_Apparaitre()
For x = 13 To 15
If ActiveSheet.Shapes(x).Visible = True Then
ActiveSheet.Shapes(x).Visible = False
Else: ActiveSheet.Shapes(x).Visible = True
End If
Next
End Sub

Toutefois, cette formule n'est pas très pratique car je n'arrive pas à identifier un objet indépendamment des autres.

J'ai essayé avec la seconde formule: la liste de noms mais ça ne fonctionne pas. Lorsque je tape
Dim Tab(Nombre d'objet) as String
Tab(1)="Nom1"
Tab(2)="Nom2"
Tab(3)="Nom3"

Il me met un message d'erreur : "attendu identificateur" !!!!!!!!

Quelqu'un comprend t'il pourquoi ???? Il me manque un élément dans la formule ??? Existe-t'il une autre méthode pour identifier chaque objet pour ensuite les inclures dans ma formule ????

Merci de vos réponses
 
Re : Comment masquer plusieurs objets

Merci, je l'écrie comme ça alors : Dim Tab(Nombre d'objet).Name as String ????

Sinon j'ai pas saisie ou il faut rajouter le ".Name"
 
Re : Comment masquer plusieurs objets

Merci pour ta réponde rapide. Je débute donc sorry si je parait un peu lent à la compréhension !!!!! En fait grâce à vos conseils j'ai écris 3 formules différentes. Comme indiqué dans mon premier post, la première fonctionne mais est peu maniable car elle ne me permet pas de choisir les objets que je veux masquer. Les deux autres formules ne fonctionnent pas en l'état. Si je te met les deux peux-tu m'indiquer si je commet une erreur ?????


1ère formule:
Sub Masquer_Apparaitre()
For x = 13 To 15
If ActiveSheet.Shapes(x).Visible = True Then
ActiveSheet.Shapes(x).Visible = False
Else: ActiveSheet.Shapes(x).Visible = True
End If
Next
End Sub
Celle-ci fontionne


2ème formule:
Dim TabName As String
TabName(1) = "bouchons moulés"
TabName(2) = "bouchons réutilisables"
TabName(3) = "bouchons à usage unique"
TabName(4) = "Arceaux"

For x = 1 To 4
If ActiveSheet.Shapes(TabName(x)).Visible = True Then
ActiveSheet.Shapes(TabName(x)).Visible = False
Else: ActiveSheet.Shapes(TabName(x)).Visible = True
End If
Next
Lors de l'execution, le message suivant apparait :"tableau attendu"


3ème formule (sur tes conseils):
For x = 1 To 4
If ActiveSheet.Shapes(x).Name = True Then
ActiveSheet.Shapes(x).Name = False
Else: ActiveSheet.Shapes(x).Name = True
End If
Next
Quand je l'écrie comme ceci, ça ne fonctionne pas, il me met une erreur: "erreur d'execution '70' permission refusée". Jamais eu ce type d'erreur!!!


Désolé pour la longueur du post mais j'essaye d'être le plus clair possible.
Encore merci de votre aide
 
Re : Comment masquer plusieurs objets

Re bonjour,

"Name" est explicite je pense non?:

If ActiveSheet.Shapes(x).Name = "bouchons moulés" Then

La 1ere formule peut être plus courte:

For x = 13 To 15
ActiveSheet.Shapes(x).Visible = Not ActiveSheet.Shapes(x).Visible
Next
 
Re : Comment masquer plusieurs objets

Bonjour,

Merci skoobi pour ces préçisions.

Effectivement ma 1ère formule pouvait être nettement plus courte. Merci pour cette aide préçieuse.

Pour en revenir avec la fonction "Name". Oui c'est explicite dans le sens ou je comprend bien qu'elle renvoi à un nom définit après. Dans mon exemple "bouchons moulés" ou "bouchons réutilisables". Par contre comment faire pour grouper plusieurs noms et pour les masquer ou non. Il faut que je la compile avec la fonction "Visible" ???
Et puis après essai, dès que j'ai introduit le .Name dans ma formule (à la place du .Visible), j'obtient tjr le même message d'erreur : permission refusée !!!!

C'est décourageant. Et puis surtout j'ai l'impression de passer pour un gros nul !!! Très frustrante comme situation.

Mais puisque la 1ère formule fonctionne, n'existe-t'il pas un moyen (en gardant les numéros) de ne sélectionner que certains numéros d'objet. Pour résumer au lieu d'écrire For x = 13 To 15, écrire un truc du genre For x = 13, 14, 15, 17, 20... Je dis peut être une bêtise là !!!! lol
 
Re : Comment masquer plusieurs objets

Re,


Non, tu ne dis pas de bêtise:

Tu peux faire ceci:

Code:
For x = 13 To 20
   Select Case x
   Case 13, 14, 15, 17, 20
      ActiveSheet.Shapes(x).Visible = False
   End Select
Next
 
Re : Comment masquer plusieurs objets

Thank's skoobi,

Ca fonctionne parfaitement avec cette nouvelle formule !!!!!!!!! Merci beaucoup pour ton aide.
Le plus difficile maintenant c'est de repérer le numéro de chaque objet, mais franchement c'est top.

J'essayerai plus tard de comprendre la fonction "Name". Quand j'aurai progressé dans vba.

Encore merci et à bientot
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…