Problème pour faire disparaître visible = false

Bonjour,

J'aimerais faire une macro, qui, affiche ou cache par exemple une imagebox

du coup j'ai fais des tests j'ai fais un bouton sur le feuille1 que j'ai nommé button1

j'ai fais mon panel imagebox que je nomme pano

j'ai double cliqué sur le bouton et j'ai mis :

Private Sub CommandButton1_Click()

pano.visible = false

End Sub

cela fonctionne.

donc j'essaye de l'appliquer à un autre bouton ou il y a déjà plusieurs lignes de commande sur se bouton. ( afficher du text, fermer une fenêtre userform etc ) sachant que se bouton se trouve sur une userform1

sauf que la, quand je tape : pano. la liste déroulante qui propose la liste des commandes ne s'affiche pas, et même si je l'écrie entièrement soit il se passe rien quand j'utilise le bouton, soit une erreur s'affiche.

j'ai même testé avec aucune formule en plus sur le bouton cela ne fonctionne pas, et je crois qu'il est pas possible de faire ça quand il s'agit d'un bouton qui se trouve sur une userform agissant sur quelque chose sur la feuille ? enfin je crois

vous avez une solution ?

Bonjour

« sauf que la, quand je tape : pano. la liste déroulante qui propose la liste des commandes »

Si pano ne fait pas partie du module dans lequel tu codes, c'est normal !

Pour que l'intellisense fonctionne, il faut :

  • soit que l'objet appartienne au module dans lequel tu codes,
  • soit que l'objet (ou la variable) soit déclaré (et affecté)

Si tu commençais tous tes modules par Option Explicit, le VBE te l'aurait dit !

merci pour ta réponse rapide.

du coup question bête, mais comment faire ? je débute et j'ai pas mal de mal à mis retrouver ....

Re,

Deux solutions :

1) Avec des objets déclarés :

Option Explicit
Private Sub CommandButton1_Click()
Dim w As Worksheet
Dim p As Shape
  Set w = Worksheets("Feuil1")
  Set p = w.Shapes("pano")
  p.Visible = False
End Sub

2) en utilisant les CodeName pour désigner les feuilles du classeur

Option Explicit
Private Sub CommandButton2_Click()
  Feuil1.pano.Visible = True
End Sub

Chacune à des avantages et des inconvénients,

avec la seconde, l'intellisense est plus précise.

Je t'invites à saisir des deux (saisir, pas faire copier/coller) pour voir l'avantage de l'intellisense lorsque les variables sont déclarées ou connues (objets du classeur).

Puis essaies ceci (Sans Option Explicit et sans déclarer le variables) :

Private Sub CommandButton1_Click()
  Set w = Worksheets("Feuil1")
  Set p = w.Shapes("pano")
  p.Visible = False
End Sub

Ça fonctionne aussi mais tu ne bénéficie pas de l'intellisense.

Rechercher des sujets similaires à "probleme disparaitre visible false"