Microsoft 365 Problème de protection d'onglet

JPh2309

XLDnaute Junior
Bonjour,
J'ai créé un fichier Excel tout simple avec 6 onglets, destinés à 6 personnes différentes. Chaque onglet contient des données personnelles.
J'ai protégé chaque onglet par un mot de passe (différent à chaque fois bien sûr).
Mon fichier Excel est sauvegardé dans one drive. J'ai copier le lien du partage que j'ai envoyé à chaque personne avec son propre mot de passe.
Mais quand ils ouvre le fichier, ils peuvent accéder à tous les onglets.
Comment faire s'il vous plaît pour que chacun ne puisse ouvrir que son onglet ?
Merci de votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir JPh,
Je viens d'essayer sous OneDrive et tout se passe bien.
Pouvez vous tester cette PJ, c'est celle que j'ai testée et aucun problème de déprotection intempestive.

Par contre on "voit" les onglets, mais on ne peut y accéder. Mais comme toute protection d'onglets.
 

Pièces jointes

  • EssaiPWD.xlsm
    8.5 KB · Affichages: 13

JPh2309

XLDnaute Junior
Bonjour,
Merci Sylvanu pour cette réponse.
En fait, la protection de mon fichier fonctionne comme la votre.
Ce que je voudrais, c'est que le mot de passe soit demandé au moment où on clique sur l'onglet (avant que l'on atteigne la feuille de calcul et ses données). Je ne sais pas si c'est possible ?...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Toute protection XL est illusoire. Un esprit malveillant pourra toujours tout vous cracker.
Ceci étant dit et si vos collègues ne sont pas trop curieux, un ex en PJ avec :
- dans thisworkbook, qui masque toutes les feuilles en VeryHidden :
VB:
Private Sub Workbook_Beforeclose(Cancel As Boolean)
For Each sh In Worksheets
    If sh.Name <> "Entete" Then
        sh.Visible = xlVeryHidden
    End If
Next sh
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
    If sh.Name <> "Entete" Then
        sh.Visible = xlVeryHidden
    End If
Next sh
MDP.Show
End Sub
Un userform MDP avec dans le bouton Valider :
Code:
Private Sub CommandButton1_Click()
Dim i%, sh, MotPasse()
' Structure array : NomFeuille, Mot de passe associé
MotPasse = Array("sophie", "abcd", "pierre", "azerty", "jacques", "pol", "nicole", "treza")
For i = 0 To UBound(MotPasse) Step 2
    If MDP.TextBox1 = MotPasse(i + 1) Then
        Sheets(MotPasse(i)).Visible = True
        Sheets(MotPasse(i)).Select
    End If
Next i
If MDP.TextBox1 = "JPh2309" Then
    For Each sh In Worksheets
        sh.Visible = True
    Next sh
End If
Unload MDP
End Sub
Donc, vous modifiez les feuilles à votre convenance et vous remettez à jour la liste avec les noms de feuille et les mot de passe.
Un mot de passe admin a été prévu, qui démasque toutes les feuilles.
Actuellement c'est JPh2309, à modifier. Pensez aussi à mettre un mot de passe sur le VBA.
 

Pièces jointes

  • Protection.xlsm
    21.6 KB · Affichages: 11

Discussions similaires

Réponses
12
Affichages
301

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi