Rapport de message :*
 

Re: Authentification Login Password par USF d’une BD

Titre du sujet : Re: Authentification Login Password par USF d’une BD
par myDearFriend! le 12/08/2009 01:19:23

Re netweb2008,

Ci-joint ton classeur modifié en fonction de ce que j'ai pu faire...

Personnellement, je ne crois pas à ces principes de verrouillage/déverrouillage de feuille selon l'utilisateur (et si l'utilisateur n'activait pas les macros à l'ouverture du classeur, comment feras-tu ? Tu vas sans doute essayer de compenser en tentant de gérer la protection lors de la sauvegarde au préalable, mais dans ce cas, tu cours tout droit vers une usine ingérable, c'est sûr...). Mais comme tu souhaites obtenir un effet du genre, je te fais quand même une proposition à titre d'aide...

Je n'ai pas compris pourquoi tu avais modifié ton Userform de demande de mot de passe et avais créé cette fois une zone spécifique Administrateur et une zone spécifique Utilisateur... Pour ma part, j'ai réduis le tout à une seule zone, beaucoup plus simple à gérer.


Dans cette pièce jointe, 3 Logins et/ou Mots de passe à adapter selon ton besoin :
- Utilisateur : admin et mot de passe associé : 1
- Utilisateur : martin et mot de passe associé : 2
- Mot de passe de verrouillage de la feuille BASE : netweb2008

Ainsi :
- L'utilisateur "admin" avec le mot de passe "1" peut accéder à la base en lecture écriture
- L'utilisateur "martin" avec le mot de passe "2" peut accéder à la base en lecture seule
- Les utilisateurs non reconnus n'accèdent à rien (s'ils jouent le jeu de l'activation des macros à l'ouverture du classeur !)

DANS LE MODULE DE CODE DE L'OBJET THISWORKBOOK :
Option Explicit
'CHARGEMENT INITIAL DE L'USERFORM4"

Private Sub Workbook_Open()
    With Worksheets("Accueil")
        .Visible = xlSheetVisible
        .Activate
    End With
    Worksheets("Base").Visible = xlSheetVeryHidden
    UserForm4.Show
End Sub

DANS LE MODULE DE CODE DU USERFORM4 :
Option Explicit

Const PwdFeuille As String = "netweb2008"   'A adapter...

Private Sub btnOK_Click()
Dim FlagMdP As Boolean, Adm As Boolean

    'Vérification Mot de passe
    Select Case txtUser.Text
    Case "admin"                        'Administrateur
        FlagMdP = txtPwd.Text = "1"
        If FlagMdP Then Adm = True
    Case "martin"                       'Utilisateur Martin
        FlagMdP = txtPwd.Text = "2"
    Case Else                           'Les autres
        FlagMdP = False
    End Select
   
    'Activation de la feuille BASE
    If FlagMdP Then
        With Sheets("BASE")
            'Visibilité
            .Visible = xlSheetVisible
            'Protection
            If .ProtectContents Then
                If Adm Then
                    .Unprotect Password:=PwdFeuille
                End If
            Else
                If Not Adm Then
                    .Protect Password:=PwdFeuille
                End If
            End If
            'Activation
            .Activate
        End With
    Else
        MsgBox "Utilisateur ou Mot de passe non reconnu !"
    End If
   
    Unload Me
End Sub

Private Sub txtPwd_Change()
    VerifSaisie
End Sub

Private Sub txtUser_Change()
    VerifSaisie
End Sub

Private Sub UserForm_Initialize()
    btnOK.Enabled = False
End Sub

Private Sub VerifSaisie()
    btnOK.Enabled = txtUser.Text <> "" And txtPwd.Text <> ""
End Sub

En espérant que cette pièce jointe pourra t'aider et servir de base à tes travaux...

Par ailleurs, dans CE POST de ton précédent fil de discussions, mon premier message était de t'informer de ma désapprobation en ce qui concerne le multiposts dans les forums. Bien que tu confirmes dans ce même fil :
Citation :
netweb2008 a écrit :
NB : j'ai bien consulté les liens Web que vous avez mentionné.
Je constate que nous n'avons visiblement pas le même sens du respect de l'autre puisque je tombe aujourd'hui sur cet AUTRE FIL (toujours sans aucune information de part et d'autre que ta question était posée aussi ailleurs)...

J'aime bien aider généralement, mais comme j'ai le sentiment d'être le seul à produire des efforts ici, j'arrête là ma collaboration à ton projet pour ma part et te souhaite une bonne continuation pour la suite...

Cordialement,