Conditionner affichage onglet / mot de passe

Fermé
pticoni - 18 août 2009 à 13:30
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 août 2009 à 15:19
Bonjour,

Je souhaite conditionner l'affichage d'un onglet par un mot de passe.
L'objectif est de réunir dans un seul fichier des onglets saisis par différents utilisateurs. Chaque utilisateur est maître de son onglet mais ne doit pas pouvoir consulter les autres onglets pour des raisons de confidentialité.

Exemple : l'utilisateur ouvre le fichier excel et souhaite afficher "son" onglet pour le mettre à jour. Il rentre alors son mot de passe en utilisant par exemple la fonctionnalité de protection d'un onglet (ou autre solution permettant de saisir un mot de passe). La validation du mot de passe entraîne l'affichage d'un onglet précis que l'on doit pouvoir relier au mot de passe.

Pour info, j'ai commencé à bidouiller ce bout de code (récupéré sur ce forum) pour arriver à mes fins, en vain :

Sub Déprotection()
textetitre = InputBox(Title:="Bonjour", _
Prompt:="Veuillez Saisir le code d'accès.")
If textetitre = "titi" Then
Worksheets(1).Unprotect Password:="titi"
Else
msg = "Mot de passe incorrect."
StyleBoîteDialogue = vbOKOnly + vbQuestion
Title = "Accès réglementé."
réponse = MsgBox(msg, StyleBoîteDialogue, Title)
Exit Sub
End If
End Sub

Merci d'avance de votre aide et de vos conseils !

Pticoni
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 août 2009 à 15:19
Salut,
Je pense qu'il faut dans un premier temps masquer toutes tes feuilles puis faire quelque chose dans ce genre là :
Cette procédure fonctionne si le mot de passe est le nom de l'onglet.

Dim mdp As String
Dim Ws As Integer
mdp = InputBox("Veuillez saisir votre mot de passe", "Bonjour")
For Ws = 2 To Sheets.Count
If Sheets(Ws).Name = mdp Then
Sheets(mdp).Visible = True
Sheets(mdp).Activate
ActiveSheet.Unprotect
Exit Sub
End If
Next
MsgBox ("Mauvais mot de passe")
0