Mot de passe par feuille ou groupe de feuille

Bonjour à tous,

Je suis à la recherche d'une méthode qui permet d'afficher (via un mot de passe) un seul feuille (ou un groupe de feuille) lors de l'ouverture du fichier.

Dans le fichier joint :

Avec le mot de passe A, si je tape celui-ci, il y aura que l'onglet "CSC-MagA" qui sera afficher

Avec le mot de passe A2, il y aura l'onglet "CSC-MagA" et l'onglet "MagA-CSC" d'afficher.

Merci par avance de votre aide et bonne journée

31test.xlsx (9.67 Ko)

Bonjour,

Un début de réponse à étudier.

Cdlt.

Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
Const PWD As String = "A"
Const PWD2 As String = "A2"
Dim r As Variant

    Application.ScreenUpdating = False

    r = Application.InputBox(prompt:="Saisissez le mot de passe.", Title:="Mot de passe ?", Type:=2)

    Select Case True
        Case r = "False" Or Len(r) = 0
            GoTo exit_Handler
        Case r = "A"
            For Each ws In ThisWorkbook.Worksheets
                Select Case True
                    Case ws.Name = "CSC-MagA": ws.Visible = True
                    Case Else: ws.Visible = False
                End Select
            Next ws
            Exit Sub
        Case r = "A2"
            For Each ws In ThisWorkbook.Worksheets
                Select Case True
                    Case ws.Name = "CSC-MagA": ws.Visible = True
                    Case ws.Name = "MagA-CSC": ws.Visible = True
                    Case Else: ws.Visible = False
                End Select
            Next ws
            Exit Sub
        Case Else
            GoTo exit_Handler
    End Select

exit_Handler:
    MsgBox "Le classeur va se fermer.", vbOKCancel + vbInformation
    ThisWorkbook.Close savechanges:=False
    Exit Sub

End Sub

Bonjour Jean-Eric, AcuraDreams,

J'arrive en retard mais voici une solution.

Private Sub Workbook_Open()
Dim Nom As String

    On Error GoTo ErrHandler
   'retour iputbox
imput:

Nom = InputBox("Saisie de votre Code : ", "Code")

If Len(Nom) = 0 Or Len(Nom) > 3 Then   'Checking if Length of name is 0 characters
  reponse = MsgBox("Code non valide", vbOKCancel + vbQuestion, "Gestion des erreurs")

    If reponse = vbCancel Then
    MsgBox "Au revoir"
    Exit Sub

    ElseIf reponse = vbOK Then
    GoTo imput:
    End If

ElseIf Nom = "A" Then

    Worksheets("CSC-MagA").Visible = True

ElseIf Nom = "A2" Then

    Worksheets("CSC-MagA").Visible = True
    Worksheets("MagA-Csc").Visible = True

End If

'Gestion des erreurs'
  Exit Sub
ErrHandler:
  MsgBox "Une erreur s'est produite"

End Sub

Bonne journée à tous.

Bonjour

Merci de vos réponses.

Je viens de faire un test avec la version de Jean-Eriic : Je rentre dans le fichier et fait une modification (rajout d'un commentaire par ex)je sauvegarde. Si je rentre de nouveau dans le fichier, les onglets sont apparant ?

Peux-être que je fait une erreur ?

Merci encore de votre aide

Hello,

Avant le début du code place ce petit code.

Sub hide()

Dim ws As Worksheet
invisible = Array("CSC-MagA", "MagA-CSC")

For Each ws In ActiveWorkbook.Worksheets

    For Each nome In invisible
        If ws.Name = nome Then
            ws.Visible = False
        End If
    Next nome

Next ws
End Sub

Hello Nonesofar,

J'ai essayé avec ta méthode (j'ai mis les 2 codes)

Le premier fonctionne nickel et cache les onglets, mais pas de réaction de la suite du code (pas de demande de mot de passe)

J'ai remis le fichier en PJ avec tes 2 codes ? serais-tu d'ou cela peut provenir ?

Merci de ton aide

13test.xlsm (23.00 Ko)

Hello,

Attends, est-ce que le fichier de jean-eric te conviens? Parce-que j'ai pas de problème même en enregistrant j'ai aucun onglet qui apparaît.

Test ce fichier en PJ voir si ça correspond à ta demande.

40acuradreams.xlsm (22.31 Ko)

Hello

Merci de ton aide, c'est parfait

Bonne journée

Bonjour AcuraDreams,

Voici une autre solution.

À vous de voir.

Au Plaisir.

Jean

Bonsoir Moé,

Votre solution est vraiment génial Merci

Bonjour,

Je dois réaliser un classeur excel de 2 feuilles avec 3 niveaux d'accès :

  • Utilisateur lambda : Accès à une feuille, ne doit par voir la seconde
  • Gestionnaire : Accès aux 2 feuilles
  • Admin : accès à tout, (dont code VBA)

Merci Moé pour votre superbe feuille xls sur l'affichage/masquage de feuille selon les utilisateurs qui répond à mon problème sous Excel

J'ai toutefois un énorme problème : si j'ouvre la feuille avec libre office... Tout le monde a accès à tout.

Et j'ai fait le test en protégeant aussi l'accès VBA (fonctionne sous Excel), mais Libre office permet de voir et modifier le code VBA !

Avez-vous une idée de comment gérer ce souci ? (Ma feuille sera utilisée sous Excel et sous libre office)

Rechercher des sujets similaires à "mot passe feuille groupe"