Microsoft 365 Masquer démasquer onglet avec mot de passe

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

Dans le fichier en pièce jointe, je souhaiterais masquer tous mes onglets via un Ctrl+m par exemple et ensuite les démasquer via un Ctrl+d mais avec mot de passe

Je pensais faire avec un visible dans Thisworkbook mais cela n'a pas l'air de fonctionner

Auriez vous une idée ?
 

Pièces jointes

  • Test.xlsx
    18.9 KB · Affichages: 26
Solution
@FCMLE44

voici la 2ème version, et j'ai trouvé mieux : au lieu de faire le Job
pour les feuilles 1 à 3 puis 4 et 5, c'est bien plus simple de faire
le Job de 1 à 5 sauf si c'est la 4ème feuille.


VB:
Option Explicit

Private Sub Job(k%)
  Dim i As Byte: Application.ScreenUpdating = 0
  For i = 1 To Worksheets.Count
    If i <> 4 Then Worksheets(i).Visible = k
  Next i
End Sub

Sub Démasquer()
  Dim mdp$
  mdp = InputBox("Veuillez saisir le mot de passe")
  If mdp = "loup" Then Job -1
End Sub

Sub Masquer()
  Job 2
End Sub

attention : je rappelle que cette fois, la feuille "Salariés" est en position 4
et ne doit pas être changée de place, sinon les macros ne feront plus
ce qu'il faut !


soan

soan

XLDnaute Barbatruc
Inactif
Bonjour FCM,

il y a un gros problème dans ton énoncé ! car dans un classeur Excel,
on ne peut pas masquer toutes les feuilles ! la preuve :


Image.jpg


solution n° 1 : tu gardes visible "Feuil1" et on masque toutes les autres.

solution n° 2 : tu ajoutes une feuille "Accueil", et on masque
"Feuil1" à "Feuil5".


soan
 

soan

XLDnaute Barbatruc
Inactif
@FCMLE44

ton fichier en retour. :)

fais Ctrl m ; puis Ctrl d


VB:
Option Explicit

Private Sub Job(k%)
  Dim i As Byte: Application.ScreenUpdating = 0
  For i = 2 To Worksheets.Count
    Worksheets(i).Visible = k
  Next i
End Sub

Sub Démasquer()
  Job -1
End Sub

Sub Masquer()
  Job 2
End Sub

soan
 

Pièces jointes

  • Test.xlsm
    25.2 KB · Affichages: 7

soan

XLDnaute Barbatruc
Inactif
pour le mot de passe afin de démasquer, par exemple "loup" :

Code:
Sub Démasquer()
  If mdp = "loup" Then Job -1
End Sub

à toi de choisir ce que tu préfères pour mdp :
exemples : une variable VBA de type string,
ou un nom défini, ou une cellule.


soan
 

soan

XLDnaute Barbatruc
Inactif
ce que tu as fait avec InputBox est ok. 👍 pour ta question :

il te suffit de faire un double-clic sur l'onglet où tu vois écrit
"Accueil" ; tu pourras alors taper "Salariés" à la place. :)

au niveau d'Excel, pas de l'éditeur VBA ; mais c'est possible
aussi de renommer une feuille dans la fenêtre de projet.


soan
 

soan

XLDnaute Barbatruc
Inactif
c'est préférable, car ça simplifie le code VBA ; mais sinon, c'est pas obligé :
il faut alors balayer toutes les feuilles et faire le Job si le nom de la feuille
est autre que "Salariés". (et ça si la feuille "Salariés" a une position variable,
non connue d'avance)


si la position est fixe, par exemple "Salariés" est toujours la feuille n° 5,
alors on peut faire le Job des feuilles 1 à 4 puis 6 à dernière feuille.


soan
 

soan

XLDnaute Barbatruc
Inactif
@FCMLE44

voici une version où la feuille "Salariés" est la 4ème feuille du classeur ;
essaye les 2 macros Ctrl m et Ctrl d ; si tu déplaces la feuille à un
autre endroit, les macros fonctionneront aussi.

la version suivante sera si la feuille "Salariés" est toujours la 4ème
feuille du classeur, et personne devra la déplacer !


VB:
Option Explicit

Private Sub Job(k%)
  Dim i As Byte: Application.ScreenUpdating = 0
  For i = 1 To Worksheets.Count
    With Worksheets(i)
      If .Name <> "Salariés" Then .Visible = k
    End With
  Next i
End Sub

Sub Démasquer()
  Dim mdp$
  mdp = InputBox("Veuillez saisir le mot de passe")
  If mdp = "loup" Then Job -1
End Sub

Sub Masquer()
  Job 2
End Sub

soan
 

Pièces jointes

  • Test v1.xlsm
    26.1 KB · Affichages: 7

FCMLE44

XLDnaute Impliqué
Supporter XLD
@FCMLE44

voici une version où la feuille "Salariés" est la 4ème feuille du classeur ;
essaye les 2 macros Ctrl m et Ctrl d ; si tu déplaces la feuille à un
autre endroit, les macros fonctionneront aussi.

la version suivante sera si la feuille "Salariés" est toujours la 4ème
feuille du classeur, et personne devra la déplacer !


VB:
Option Explicit

Private Sub Job(k%)
  Dim i As Byte: Application.ScreenUpdating = 0
  For i = 1 To Worksheets.Count
    With Worksheets(i)
      If .Name <> "Salariés" Then .Visible = k
    End With
  Next i
End Sub

Sub Démasquer()
  Dim mdp$
  mdp = InputBox("Veuillez saisir le mot de passe")
  If mdp = "loup" Then Job -1
End Sub

Sub Masquer()
  Job 2
End Sub

soan
Merci
 

Discussions similaires

Réponses
2
Affichages
166
Réponses
5
Affichages
404
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 215
Messages
2 086 334
Membres
103 189
dernier inscrit
Bob34000