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
@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
 

Pièces jointes

  • Test v2.xlsm
    26.1 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
@FCMLE44

quand j'ai mis le test If i <> 4 Then j'ai oublié que du coup,
le
With Worksheets(i) est seulement pour .Visible = k
le With devient inutile !

dans mon post #16 précédent, j'ai remplacé le fichier joint
et corrigé le code VBA qui est entre balises de code.

donc au lieu de :


VB:
With Worksheets(i)
  If i <> 4 Then .Visible = k
End With

il y a maint'nant :

VB:
If i <> 4 Then Worksheets(i).Visible = k

(c'est la seule différence : j'ai rien changé d'autre)



j'en profite pour te dire que si tu as un doute et qu'il se pourrait
que la feuille "Salariés" soit déplacée, alors il vaut mieux utiliser
la version de mon
post #14.




utilise la version 2 seulement si tu es sûr et certain que la 4ème
feuille "Salariés" ne sera jamais déplacée, ni maint'nant, ni plus
tard (pas même dans 2 mois ou 5 ans), ni par toi, ni par un collègue.

bien sûr, tu peux aussi protéger le classeur pour éviter que
quelqu'un puisse déplacer la feuille "Salariés", mais alors,
la macro devra enlever cette protection pour faire le Job,
puis remettre ensuite cette même protection classeur.


soan
 
Dernière édition:

Discussions similaires

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

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel