Bloquer une feuille d'un classeur par un mot de passe

ChercheJ Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   -  
angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je souhaiterais savoir si sur un fichier Excel, il est possible de protéger une feuille de calcul par un mot de passe sans protéger les autres ?
Autrement dit, est-il d'accéder à la feuille 1 mais pas à la feuille 2 sauf si on y saisit le bon mot de passe.
Si oui, pourriez-vous m'indiquer comment s'il vous plaît ?

Merci pour votre aide.
A voir également:

6 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
Bonjour à tous

Pour prolonger le conseil donné par Le Pivert :
Dans l'éditeur VBA dans ThisWorkbook mettre la macro suivante pour cacher Feuil2 à l’ouverture du classeur
Private Sub Workbook_Open()
Sheets("Feuil2").Visible = xlVeryHidden
End Sub

Dans la feuille 1 mettre un bouton pour accès à Feuil2
Associer le code suivant au bouton avec le mot de passe de ton choix
Private Sub CommandButton1_Click()
 resultat = InputBox("Entre votre mot de passe ?", "AUTORISTAITON")
    If resultat = "toto" Then
    Sheets("Feuil2").Visible = True
    Sheets("Feuil2").Activate
    Else
    MsgBox "Mot de passe incorrect"
    End If
End Sub

Bien sûr dans les 2 macros remplacer Feuil2 par le nom réel de la feuille si tu lui en attribué un spécifique

Cdlmnt
Via
1
angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Pour ma part j'ai entrée ces infos. mais impossible de renommer mes feuilles en modifiant aussi les nom de la VBA il doit me manquer une info ma feuille 1 se nomme Accueil (qui comprend mes bouton Masquer et afficher pour avoir accès a mes feuilles) - 2 CSST - 3 CNESST - 4 PAIE donc si vous pourriez m'aider à trouver mon problème cela serait très gentil.

Private Sub Workbook_Open()
Dim i As Integer
Worksheets("Accueil").Activate
End Sub

Sub Masquerfeuille()
Dim i As Integer
If MsgBox("Voulez-vous vraiment masquer les feuilles?", vbYesNo, "Confirmation!") = vbYes Then
For i = 1 To Sheets.Count - 1
Sheets("CSST ").Visible = xlSheetVeryHidden
Next i
End If
End Sub

Sub ActiverFeuille()
Dim i As Integer
Dim MonPassword As Variant
Dim AjoutData As Range
Set AjoutData = Sheets("CNESST").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

On Error GoTo 1

For i = 1 To Sheets.Count - 1
Sheets("PAIE ").Visible = xlSheetVeryHidden
Next i

MonPassword = InputBox("Veuillez saisir votre mot de passe pour acc?der ? votre feuille :", "Identification")
If MonPassword = "1" Then
Sheets("CSST").Visible = True
Worksheets("CSST").Select
Range("A1").Select
End If
If MonPassword = "2" Then
Sheets("CNESST").Visible = True
Worksheets("CNESST").Select
Range("A1").Select
End If

If MonPassword = "3" Then
Sheets("PAIE").Visible = True
Worksheets("PAIE").Select
Range("A1").Select
End If

If MonPassword = "admin1" Then
For i = 1 To 3
Sheets("CSST, CNESST, PAIE'').Visible = True
Worksheets("CSST, CNESST, PAIE").Select
Range("A1").Select
Next i

End If

If MonPassword <> "" Then
AjoutData = MonPassword
AjoutData.Offset(0, 1).Value = Now
End If
1 End Sub
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780 > angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour angelinas32,

Quand tu mets du code sur le Forum il faut le baliser, c'est très simple :
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746 > angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour angelina

Déjà ta boucle ne peut fonctionner car au lieu de faire varier varier les feuilles selon leur rang avec
Sheets(i).Visible = xlSheetVeryHidden 

tu as toujours la même instruction
Sheets("CSST ").Visible = xlSheetVeryHidden 


Idem avec la 2nde boucle qui comporte en plus une instruction non valable
Sheets("CSST, CNESST, PAIE'').Visible = True 


Essaie plutôt ainsi :
Sub Masquerfeuille()
Dim i As Integer
If MsgBox("Voulez-vous vraiment masquer les feuilles?", vbYesNo, "Confirmation!") = vbYes Then
Sheets("CSST ").Visible = xlSheetVeryHidden
Sheets("CNESST").Visible = xlSheetVeryHidden
Sheets("PAIE").Visible = xlSheetVeryHidden
End If
End Sub

Sub ActiverFeuille()
Dim i As Integer
Dim MonPassword As Variant
Dim AjoutData As Range
Set AjoutData = Sheets("CNESST").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

Sheets("CSST ").Visible = xlSheetVeryHidden
Sheets("CNESST").Visible = xlSheetVeryHidden
Sheets("PAIE").Visible = xlSheetVeryHidden

MonPassword = InputBox("Veuillez saisir votre mot de passe pour accéder à votre feuille :", "Identification")
If MonPassword <> "1" And MonPassword <> "2" And MonPassword <> "3 " And MonPassword <> "admin1" Then GoTo fin

If MonPassword = "admin1" Then
Sheets("CSST").Visible = True
Sheets("CNESST").Visible = True
Sheets("PAIE").Visible = True
Worksheets("CSST").Select
Range("A1").Select
End If

If MonPassword = "1" Then
Sheets("CSST").Visible = True
Worksheets("CSST").Select
Range("A1").Select
End If

If MonPassword = "2" Then
Sheets("CNESST").Visible = True
Worksheets("CNESST").Select
Range("A1").Select
End If

If MonPassword = "3" Then
Sheets("PAIE").Visible = True
Worksheets("PAIE").Select
Range("A1").Select
End If


AjoutData = MonPassword
AjoutData.Offset(0, 1).Value = Now

fin:
End Sub

Cdlmnt
Via
0
angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   > via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, j'ai enfin compris le tout et tout fonctionne.

Dernière petite demande. À quel endroit et quel code dois-je entrer afin que si un mot de passe erroné est entrée qu'un message d'erreur s'affiche?

Ex : j'ai créé deux boutons avec macro dans ma feuille accueil une pour activer et l'autre pour cacher, mais présentement lorsque je ne rentre pas le bon mot de passe je n'ai aucune information seulement que mes feuilles ne s'affichent pas.

Merci de votre aide

Cordialement,
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746 > angelinas32 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir

Modifie la ligne :
If MonPassword <> "1" And MonPassword <> "2" And MonPassword <> "3 " And MonPassword <> "admin1" Then Msgbox "Code non valide, réessayez" :GoTo fin

Cdlmnt
Via
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
vus pouvez masquer la feuille l'onglet correspondant est masqué et placer la protection du classeur en structure, avec mot de passe
la feuille ne pourra être affichée que si la protection classeur est retirée

crdlmnt
0
ChercheJ Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   5
 
D'accord.
Mais si le classeur est ouvert (non protégé) et que je souhaite bloquer une des feuilles de calculs par un mot de passe, c'est possible ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ChercheJ Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   5
 
Ah, pas mal : je vais regarder cela de plus près.
Merci en tout cas.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Je voudrais préciser que toutes ces astuces de protection de feuille par mot de passe sont relativement illusoires pour quelqu'un qui connait Excel et la faiblesse de ses protections.

Je pense qu'il est bien plus simple de ne fournir au destinataire que la ou les feuille qu'il a "à en connaître".
Aujourd'hui, avec PowerQuery, effectuer une synthèse peut se faire sans macro.

0