Protection onglet multifeuille avec mot de passe

Bonjour le forum,

je tente d'appliquer un code emprunté au site de http://boisgontierjacques.free.fr/pages_site/protection.htm, principalement la version qui demande un nom d'utilisateur et mot de passe (Protection Onglet Multifeuilles Utilisateur MP.

Le hic, c'est que la feuille Admin reste disponible même si vous n'y avez pas droit.

J'essaie de voir qu'est-ce qui cloche dans le code, mais je ne trouve pas la solution.

Merci pour votre précieuse aide.

Mon classeur:

https://www.cjoint.com/c/GJknns3fuTq

Bonjour,

avez-vous masqué toutes les feuilles (sauf une)?

sur la page code de ThisworkBook,

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   For s = 2 To Sheets.Count      ' on masque les feuilles
     Sheets(s).Visible = xlVeryHidden
   Next s
End Sub

Bonjour SabV

Ouien je l'avais foutu dans le BeforeClose plutôt que dans le BeforeSave!

Sans doute l'origine du bug!

Merci d'avoir répondu.


Bonjour sabV

Même en déplaçant le code dans BeforeSave, le problème persiste!

La situation survient quand c'est un administrateur qui utilise le classeur lequel a accès à tous les onglets, et si après avoir quitter un autre usager ouvre le classeur, à l'ouverture l'onglet ADMIN reste accessible!

est-ce que l'onglet ADMIN est l'onglet 1 ?

Bonjour sabV

non, il s'agit de l'onglet 2!

Serait-ce la source du problème?

avez-vous fait ce test,

Sub test()

For s = 1 To Sheets.Count

Debug.Print s & " - " & Sheets(s).Name

Next s

End Sub

Bonjour sabV

vous pardonnerez ma méconnaissance, mais ce test a-t-il un lien avec votre question précédente, et le code du test s’insère-t-il dans au module ou au Workbook?

Merci d'expliquer, et surtout merci pour votre aide.

Cordialement,


Bonjour sabV,

Bonjour le forum,

se peut-il que le problème vient de ce code qui est dans le module 4?

Sub AfficheTousOnglets()
 rep = InputBox("mot de passe Admin?")
 If rep = "jacques" Then
   For Each S In ActiveWorkbook.Sheets
     S.Visible = True
   Next S
 End If
End Sub

Bonjour,

sans votre fichier il est difficile pour moi de vous répondre,

c'est pour cette raison que je vous ai demandé de faire ce test.

la macro doit être mit dans un module de votre fichier (MDP)

et le résultat s'inscrit sur la fenêtre "Exécution"

si la fenêtre "Exécution" n'est pas affichée : Ctrl+G ( au menu de VBE, Affichage, Fenêtre Exécution)

regarder ici:

https://www.excel-pratique.com/fr/vba

@+

isabelle

Sub test()
For s = 1 To Sheets.Count
Debug.Print s & " - " & Sheets(s).Name
Next s
End Sub

Bonjour Isabelle

mon fichier était dans le premier post!

En principe si vous cliquez sur le lien, vous devriez avoir accès au fichier.

Mon classeur:

https://www.cjoint.com/c/GJknns3fuTq

Merci encore

quel est le user et mdp ?

administrateur

ulangzx

mdp: 111

usager

uburesy

mdp:333

je n'ai pas réussi à reproduire votre problème,

j'ai ouvert le fichier avec

ulangzx

mdp: 111

je l'ai enregistré puis fermer.

à la ré-ouverture il n'y a que l'onglet "Demandes" de visible.

...et bien!

Vous l'avez enregistré comment?

Comme la barre de menu du classeur sera masquée, nous voulons que les usagers quitte le fichier à l'aide du bouton Quitter, en cliquant sur le bouton, le classeur se sauvegarde et quitte.

Vous l'avez enregistré comment?

étant donné que je l'ai ouvert à partir de cjoint, il a bien fallu que je l'enregistre sur mon pc pour faire le test,

après coup, en fermant le classeur avec le bouton Quitter

l'erreur se produit,

vu que le fichier n'est pas enregistrer à sa fermeture, ThisWorkbook.Close True

il faudrait ajouter les lignes suivante à la macro Workbook_Open

  For S = 2 To Sheets.Count ' on masque les feuilles
    Sheets(S).Visible = xlVeryHidden
  Next S

Bonjour Isabelle

super, je vais tester ça ce matin.

j'avais cru comprendre qu'avec le True de ThisWorkbook.Close True ça enregistrait par défaut!

Penses-tu alors qu'il serait préférable d'intégrer ce code dans le module du bouton Quitter plutôt que dans le BeforeSave

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, cancel As Boolean)

  Sheets("espion").[A65000].End(xlUp).Offset(0, 1) = Now
  Sheets("espion").[A65000].End(xlUp).Offset(0, 2) = Sheets("Espion").[M2] 'Environ("username")
  Sheets("espion").[A65000].End(xlUp).Offset(0, 3) = Environ("computername")
  Sheets("espion").Visible = xlVeryHidden
  For S = 2 To Sheets.Count ' on masque les feuilles
     Sheets(S).Visible = xlVeryHidden
  Next S

End Sub

Merci encore pour ta patience et ton aide.

j'avais cru comprendre qu'avec le True de ThisWorkbook.Close True ça enregistrait par défaut!

oui, mais là il y a trop d'événement qui s'exécute

car dans l'événement Workbook_BeforeClose il est demandé 2 fois d'enregistrer le fichier

il faudrait faire un peut de ménage...

Bonjour Isabelle

d'accord et merci pour tout.

Ce fut agréable de correspondre avec quelqu'un du pays!

Cordialement

Bonjour,

s.v.p. dit-moi si après le petit ménage (d'activation d'événement) si votre problème a été résolu ?

ps/ je suis dans les environ de Magog, vous êtes situé ou ?

cordialement,

isabelle

Bonjour Isabelle

pour l'heure, tout fonctionne!

J'ai d'ailleurs déplacé une portion du code dans le bouton de commande Quitter.

Je suis de Montréal.

Au plaisir.

Rechercher des sujets similaires à "protection onglet multifeuille mot passe"