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

ChercheJ Messages postés 205 Statut Membre -  
angelinas32 Messages postés 16 Statut Membre -
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.

6 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. angelinas32 Messages postés 16 Statut Membre
       
      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
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785 > angelinas32 Messages postés 16 Statut Membre
       
      Bonjour angelinas32,

      Quand tu mets du code sur le Forum il faut le baliser, c'est très simple :
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > angelinas32 Messages postés 16 Statut Membre
       
      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
    4. angelinas32 Messages postés 16 Statut Membre > via55 Messages postés 14393 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
    5. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > angelinas32 Messages postés 16 Statut Membre
       
      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
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  3. ChercheJ Messages postés 205 Statut Membre 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. ChercheJ Messages postés 205 Statut Membre 5
     
    Ah, pas mal : je vais regarder cela de plus près.
    Merci en tout cas.
    0
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    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