Bouton masquer/demasquer onglet avec mot de passe

jearau

XLDnaute Nouveau
Bonjour,

débutant sur excel 2013 et en macro:

j'utilise un classeur avec 8 feuilles dont 7 "confidentielles", une seule doit être accessible à l'ouverture du document et les autres devront être accessibles depuis un bouton "démasquer" avec mot de passe et un autre bouton "masquer".

j'ai parcouru les différents fils de discussions mais sans trouver exactement ce que je cherche.
ce fil qui correspond mais il me manque la demande de mot de passe:
https://www.excel-downloads.com/thr...her-masquer-onglets-en-un-seul-bouton.188405/

si quelqu'un pouvait m'aider .

merci d'avance.
 

Staple1600

XLDnaute Barbatruc
Re : Bouton masquer/demasquer onglet avec mot de passe

Re


Donc après quelques tests, un début de solution (avec une légère imperfection ;))
Sur la feuille qui sera toujours visible:
Insérer un ToggleButton (ou bouton bascule) présent dans les contrôles ActiveX
Passer en Mode Création (en cliquant sur l'équerre)
Puis sélectionner ce ToggleButton et faire Visualiser le code
Coller le code VBA ci-dessous
Ensuite récliquer sur l'équerre
(avant de tester changer dans le code Feuil1 par le nom de votre onglet devant rester visible)
et tester en cliquant sur le bouton bascule une fois puis une seconde fous
(PS: le mot de passe est ici: 123)
Code:
Private Sub ToggleButton1_Click()
Dim mdp
mdp = InputBox("Saisir mot de passe")
If mdp = "123" Then
Call masque
Else
ToggleButton1.Value = False
End If
End Sub

Code:
Private Sub masque()
Dim wks As Worksheet
If ToggleButton1.Value = True Then
     For Each wks In Worksheets
        If wks.Name = "Feuil1" Then
        Else
        wks.Visible = True
        End If
     Next wks
         Feuil1.ToggleButton1.Caption = "Masquer/Feuilles"
    Else
       For Each wks In Worksheets
        If wks.Name = "Feuil1" Then
        Else
        wks.Visible = xlSheetVeryHidden
        End If
     Next wks
        Feuil1.ToggleButton1.Caption = "Afficher/Feuilles"
    End If
End Sub
 
Dernière édition:

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

Bonsoir,

le fichier qu'il faut modifier avec les bons noms d'onglets.

L'onglet qui doit rester accessible sans mot de passe est l'onglets "Vendeurs", sur cette feuille il faut les boutons

j'essaye aussi la solution plus haut.

merci d'avance.
 

Pièces jointes

  • Classeur1.xlsx
    9.5 KB · Affichages: 92
  • Classeur1.xlsx
    9.5 KB · Affichages: 89
  • Classeur1.xlsx
    9.5 KB · Affichages: 110

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

Bonjour,

merci pour le code, j'ai créé la feuille en piece jointe, mais des que je renomme la feuille1 en "SUIVI" par exemple et remplace dans le code If wks.Name = "Feuil1" Then en If wks.Name = "SUIVI" Then, j'ai une erreur "la methode 'visible' de l'objet'_worksheet' a échoué erreur 1004.

Private Sub ToggleButton1_Click()
Dim mdp
mdp = InputBox("Saisir mot de passe")
If mdp = "123" Then
Call masque
Else
ToggleButton1.Value = False
End If
End Sub
Private Sub masque()
Dim wks As Worksheet
If ToggleButton1.Value = True Then
For Each wks In Worksheets
If wks.Name = "SUIVI" Then
Else
wks.Visible = True
End If
Next wks
Feuil1.ToggleButton1.Caption = "Masquer/Feuilles"
Else
For Each wks In Worksheets
If wks.Name = "Feuil1" Then
Else
wks.Visible = xlSheetVeryHidden
End If
Next wks
Feuil1.ToggleButton1.Caption = "Afficher/Feuilles"
End If
End Sub



en plus j'aurais besoin de masquer avec le même bouton les lignes de 1 à 60 plus les colonnes de Q à BB de la meme feuille .

merci d'avance pour votre aide.
 

Pièces jointes

  • suivi.xlsm
    19.3 KB · Affichages: 64
  • suivi.xlsm
    19.3 KB · Affichages: 78
  • suivi.xlsm
    19.3 KB · Affichages: 91

Staple1600

XLDnaute Barbatruc
Re : Bouton masquer/demasquer onglet avec mot de passe

Bonsoir à tous

jearau
Dans ta pièce jointe, il n'y pas de feuille nommée SUIVI, c'est le classeur que tu as nommé Suivi...:rolleyes:
Et pourquoi chercher à masquer des lignes et/ou colonnes sur des feuilles masquées ??

EDITION: Il faut renommer plusieurs fois Feuil1 en SUIVI (chose que tu n'as pas faite cf ton code copié dans ton message)
(à ce niveau If wks.Name = "SUIVI" , voir les corrections ci-dessous

Voici le code modifié comme il aurait du l'être
Code:
Private Sub masque()
Dim wks As Worksheet
If ToggleButton1.Value = True Then
     For Each wks In Worksheets
        If wks.Name = "SUIVI" Then
        Else
        wks.Visible = True
        End If
     Next wks
         Feuil1.ToggleButton1.Caption = "Masquer/Feuilles"
    Else
       For Each wks In Worksheets
        If wks.Name = "SUIVI" Then
        Else
        wks.Visible = xlSheetVeryHidden
        End If
     Next wks
        Feuil1.ToggleButton1.Caption = "Afficher/Feuilles"
    End If
End Sub
 
Dernière édition:

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

Bonjour à tous,

dans la classeur SUIVI, c'est la Feuil1 que je souhaite nommer en SUIVI et sur cette feuille SUIVI (qui n'est jamais masquée) il doit y avoir le toogle botton et les lignes et colonnes à masquer.

merci encore une fois pour la réactivité.
 

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

Re,

J'ai fait mon boulet, j'ai du lire au moins 20x le code et je suis passé à coté du 2eme Feuil1. :(

effectivement ça fonctionne maintenant, auras tu une solution pour masquer en plus les colonnes et lignes.

merci encore
 

Staple1600

XLDnaute Barbatruc
Re : Bouton masquer/demasquer onglet avec mot de passe

[...SUITE...]

S'il s'agit de masquer les lignes et colonnes sur la feuille SUIVI, alors voici les modifications à apporter.
Code:
Private Sub masque()
Dim wks As Worksheet
If ToggleButton1.Value = True Then
Feuil1.Rows("1:60").Hidden = False
Feuil1.Columns("Q:BB").EntireColumn.Hidden = False
     For Each wks In Worksheets
        If wks.Name = "SUIVI" Then
        Else
        wks.Visible = True
        End If
     Next wks
         Feuil1.ToggleButton1.Caption = "Masquer/Feuilles"
    Else
       For Each wks In Worksheets
        If wks.Name = "SUIVI" Then
        Else
        wks.Visible = xlSheetVeryHidden
        End If
     Next wks
        Feuil1.ToggleButton1.Caption = "Afficher/Feuilles"
        Feuil1.Rows("1:60").Hidden = True
        Feuil1.Columns("Q:BB").EntireColumn.Hidden = True
    End If
End Sub
 

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

Bonjour à tous

merci encore pour ton aide rapide Staple1600, une dernière amélioration encore:

est il possible, que lors de l'ouverture du classeur qui est partagé, la fonction "cacher les feuilles" sauf celle définie, soit active par défaut et c'est en cliquant sur le 'toogle' que l'on affiche les feuilles masquées.

merci d'avance pour votre aide.
 

Si...

XLDnaute Barbatruc
Re : Bouton masquer/demasquer onglet avec mot de passe

salut

Si... j’ai bien compris la recette de Staple :D, en la passant à la moulinette :p :

Code:
Private Sub ToggleButton1_Click()
  Dim mdp, Sh As Worksheet
  Application.ScreenUpdating = 0
  mdp = InputBox("Saisir mot de passe")
  Rows("1:60").Hidden = ToggleButton1
  Columns("Q:BB").Hidden = ToggleButton1
  If mdp = "123" Then
    For Each Sh In Worksheets
      If Sh.Name <> "SUIVI" Then Sh.Visible = -ToggleButton1 - 1
    Next
    ToggleButton1.Caption = IIf(ToggleButton1, "Afficher", "Masquer")
 End If
End Sub
 

Pièces jointes

  • Afficher_Masquer.xlsm
    22.6 KB · Affichages: 164

jearau

XLDnaute Nouveau
Re : Bouton masquer/demasquer onglet avec mot de passe

bonjour,

je ressort ce post, car j'aurais besoin d'une fonctionnalité supplémentaire:
il faudrait que lorsque les colonnes et lignes sont masquées, que l'utilisateur ne possedant pas le mot de passe de la macro ne puisse pas par un simple "accueil/format/afficher-masquer" faire apparaitre les cellules et lignes masquées.

je ne vois pas trop comment faire, merci pour votre aide
 

Discussions similaires

Réponses
2
Affichages
168

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni