cacher/apparaître bouton

meteo62

XLDnaute Nouveau
Bonjour à tous

Dans un userform je souhaite créer 2 boutons (la c'est facile)

1 bouton = pour cacher le bouton CommandButton2 de mes 3 feuilles et cacher les formules de mon tableau en même temps


1 bouton = pour faire apparaître le bouton CommandButton2 et mes formules de mes 3 feuilles


Je sais qu'il existe une manipulation à faire pour arriver au résultat mais mon tableau va comporter 25 feuilles par la suite et faire la manipulation va être très long d'ou l’intérêt de mettre un ou 2 boutons dans un userform

Merci de votre aide
 

job75

XLDnaute Barbatruc
Re : cacher/apparaître bouton

Bonjour meteo62,

Vous ne croyez pas qu'il aurait été sympa de joindre votre fichier ?

Alors voyez le fichier joint et le code de l'UserForm :

Code:
Private Sub CommandButton1_Click() 'Afficher/Masquer
Dim test As Boolean, w As Worksheet
Application.ScreenUpdating = False
test = CommandButton1.Caption = "Afficher"
CommandButton1.Caption = IIf(test, "Masquer", "Afficher")
For Each w In Worksheets
  w.Shapes("CommandButton2").Visible = test
  w.Unprotect "TOTO" 'mot de passe
  w.[A:C].FormulaHidden = Not test
  w.Protect "TOTO"
Next
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
CommandButton1.Caption = _
IIf(ActiveSheet.Shapes("CommandButton2").Visible, "Masquer", "Afficher")
End Sub
Trois remarques importantes :

- un seul bouton (avec alternance du texte) suffit dans l'USF

- pour masquer les formules les feuilles doivent être protégées (ici le mot de passe est TOTO)

- vérifiez sur votre fichier que les boutons à masquer ont bien le même nom (propriété Name).

A+
 

Pièces jointes

  • Afficher-Masquer(1).xls
    60.5 KB · Affichages: 73

job75

XLDnaute Barbatruc
Re : cacher/apparaître bouton

Bonjour meteo62, le forum,

Pas vraiment compris pourquoi vous voulez masquer les formules des feuilles :confused:

Voyez cette macro paramétrée dans le code de l'UserForm :

Code:
Sub Masquer(oui As Boolean)
Dim w As Worksheet
Application.ScreenUpdating = False
For Each w In Worksheets
  If w.Name <> "Feuil1" Then
    w.Shapes("CommandButton1").Visible = Not oui
    w.Unprotect "test"
    w.Cells.FormulaHidden = oui
    w.Protect "test"
  End If
Next
Application.ScreenUpdating = True
End Sub
Et j'en ai profité pour faire la même chose avec vos effacements :

Code:
Sub RAZ(AdressePlage As String)
Dim w As Worksheet
Application.ScreenUpdating = False
For Each w In Worksheets
  If w.Name <> "Feuil1" Then
    w.Unprotect "test"
    w.Range(AdressePlage).ClearContents
    w.Protect "test"
  End If
Next
Application.ScreenUpdating = True
End Sub
Fichier joint.

A+
 

Pièces jointes

  • exemplepourboutoncacher(1).xls
    102 KB · Affichages: 43

meteo62

XLDnaute Nouveau
Re : cacher/apparaître bouton

Merci pour le travail

Pour le Raz c'est super , je vais m'inspirer de ce code pour bien allégé le mien.

j'ai juste un petit problème que je n’arrive pas à résoudre.

lorsque je lance la macro ( sur mon fichier d'origine) "cacher bouton et formule" j'ai une erreur au niveau de

w.Shapes("CommandButton1").Visible = Not oui

erreur d'exécution'-2147024809 (80070057)': L'élément portant ce nom est introuvable.

J'ai beau à chercher je ne trouve pas d'ou cela peut provenir ( le bouton et bien présent et avec le même nom ("CommandButton1")


merci de votre aide
 

job75

XLDnaute Barbatruc
Re : cacher/apparaître bouton

Re,

1) Ce problème n'est pas normal et il n'existe pas sur le fichier que j'ai joint.

Essayez peut-être en utilisant :

Code:
W.OLEObjects("CommandButton1").Visible = Not oui
Mais je pense qu'en fait le bouton n'existe pas. Activez chaque feuille et exécutez la macro :

Code:
Sub Verif()
Dim o As Object
For Each o In ActiveSheet.OLEObjects
  MsgBox o.Name
Next
End Sub
2) Voici par ailleurs une amélioration importante.

Dans votre fichier il y a une macro dans chaque feuille pour le bouton "Creation liste".

Pour l'éviter on peut créer un module de classe contenant une seule macro.

La classe ne contient qu'un seul bouton, elle est initialisée par ces macros dans ThisWorkbook :

Code:
Dim C As New Classe1

Private Sub Workbook_Open()
Workbook_SheetActivate ActiveSheet
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next 'si CommandButton1 n'existe pas
If Sh.Name <> "Feuil1" Then _
  Set C.CB = Sh.OLEObjects("CommandButton1").Object
End Sub
Fichier (2).

Edit : dans la macro CB_Click du module de classe j'ai mis des points devant les Cells, c'est plus sûr même si a priori ce n'est pas indispensable.

A+
 

Pièces jointes

  • exemplepourboutoncacher(2).xls
    95.5 KB · Affichages: 43
  • exemplepourboutoncacher(2).xls
    95.5 KB · Affichages: 39
  • exemplepourboutoncacher(2).xls
    95.5 KB · Affichages: 43
Dernière édition:

meteo62

XLDnaute Nouveau
Re : cacher/apparaître bouton

Non cela ne fonctionne toujours pas

Par ailleurs je sais que mon code et trop long mais comme je débute j'essaie de prendre des infos un peu partout et j'essaie de l'adapter a mes besoin et selon mes compétence.


Et ‘t’il possible de vous contacter en message privé, et peut être vous transmettre le fichier d’origine (non public)

Je peu joindre le fichier originale mais en privé
 

job75

XLDnaute Barbatruc
Re : cacher/apparaître bouton

Re,

Bon c'était assez évident.

Sur le fichier réel la 1ère feuille s'appelle "Accueil".

Il suffit donc de remplacer If w.Name <> "Feuil1" Then par :

Code:
If w.Name <> "Accueil" Then
ou si l'on préfère :

Code:
If w.CodeName <> "Feuil1" Then
De toute façon, au cas où il y aurait des feuilles sans ce fameux bouton, il suffit de placer en début de macro :

Code:
On Error Resume Next
A+
 

Discussions similaires

Réponses
3
Affichages
234

Statistiques des forums

Discussions
312 379
Messages
2 087 767
Membres
103 662
dernier inscrit
rterterert