Recherche

VBA Excel Formulaire Login Multi-Utilisateur


Cette fonctionnalité consiste à créer un Menu de Login et Mot de passe pour sécuriser l’accès à un fichier Excel avec la possibilité d’accès à plusieurs utilisateurs. Pour ce faire, nous vous présentons dans ce qui suit les étapes à suivre pour créer un Menu Login avec la possibilité d’Accès Multi-Utilisateur :



        1. Préparation du formulaire de Login

 Nous commençons cette astuce par la conception d’un USER_FORM (Insertion + UserForm):

userform excel vba
 Ensuite, nous procédons à l’insertion de deux étiquettes, de deux zones de texte et une Bouton de Commande à l’aide de la Boite à Outils dans l’éditeur VBA (Affichage + Boite à Outils):
 vba password

Le texte à afficher dans les étiquettes sera effectué à travers un module d’initialisation du Formulaire « UserForm1 » :

  2. Code Associer au Bouton de validation de la Saisie 




Ensuite, faite double Click sur le Bouton de commande pour lui affecter le code VBA suivant :
 Private Sub CommandButton1_Click()
'Code se déclenchant au clic sur bouton
'Si TextBox1 est vide
If TextBox1 = "" Then
    'Message à l'utilisateur
    MsgBox "Saisie du nom d'utilisateur obligatoire.", vbInformation
    'sortie de la procédure
    Exit Sub
End If
'Même chose avec TextBox2
If TextBox2 = "" Then
    MsgBox "Saisie du mot de passe obligatoire.", vbInformation
    Exit Sub
End If
'Lance la fonction VerifMDP en utilisant :
    '- TextBox1 comme paramètre "utilisateur"
    '- TextBox2 comme paramètre "MdP"
'Si la fonction renvoie FAUX :
If VerifMDP(TextBox1, TextBox2) = False Then
    'c'est que le mot de passe ou l'utilisateur est faux donc
    'Message à l'utilisateur
    MsgBox "Erreur Mot de passe et/ou utilisateur. Merci de saisir à nouveau.", vbInformation
    'on vide les 2 textbox
    TextBox1 = ""
    TextBox2 = ""
    'on sort de la procédure
    Exit Sub
End If
'A partir d'ici, le code ne se déroule que lorsque mdp et nom sont corrects.
'On peut donc afficher les feuilles correspondant à l'utilisateur saisi
AfficheFeuilles TextBox1
'masque l'UserForm
UserForm1.Hide
End Sub

  ·       3. Initialisation du formulaire de saisie

 


  Au lieu de saisir directement les textes à afficher, nous pouvons programmer les étiquètes de cette UserForm, à l’aide de l’évènement initialisation du Userform à l’aide du code suivant :


 Private Sub UserForm_Initialize()
'code se déclenchant à l'ouverture de Userform1
'vidage des textbox :
TextBox1 = ""
TextBox2 = ""
'réglage des propriétés Caption
'de l'Userform :
Me.Caption = "Saisie du Mot de Passe"
'des labels :
Label1.Caption = "Utilisateur"
Label2.Caption = "Mot de Passe"
'du bouton
CommandButton1.Caption = "VALIDER"
'Remplace les caractères saisis dans le textbox2 par des astérisques
Me.TextBox2.PasswordChar = "*"
End Sub

Le résultat de cette initialisation est affiché dans la figure ci-dessous :


 Comme vous le remarquer la fonction d’finalisation a permis de remplacer « Label1 » par « Utilisateur », « Label2 » par « Mot de Passe » et « CommandButton1 » par « Valider ».


 ·        4. Fonction de vérification de Mot de Passe


La vérification du mot de passe peut se faire de plusieurs façons mais dans cet exemple, nous avons choisi de stocker les mots de passe dans une feuille Excel. Vous trouvez ci-dessous le module VBA destiné à vérifier le nom utilisateur et le mot de passe :



Function VerifMDP(Utilisateur As String, MdP As String) As Boolean
'J'ai fait le choix d'une fonction car il ne s'agit que de savoir
'si le mot de passe correspond à l'utilisateur.
'par conséquent, il nous faut une procédure qui compare les 2
'et qui renvoie VRAI ou FAUX (d'où la fonction déclarée As Boolean).
    'ICI : (Utilisateur As String, MdP As String)
    'sont des paramètres envoyés lors du clic sur le bouton
Dim rngTrouve As Range
VerifMDP = False 'par défaut, renvoie FAUX

With Sheets("Habilitation") 'dans la feuille paramétrage
     'cherche, colonne A, le nom d'utilisateur saisi
    Set rngTrouve = .Columns(1).Cells.Find(Utilisateur, LookAt:=xlWhole)
    If rngTrouve Is Nothing Then 'si il ne trouve pas
        VerifMDP = False 'la fonction renvoie faux
    Else 's'il le trouve
        'vérifie que le mot saisi feuille parametrgae colonne B est identique
        'au mot de passe saisi dans l'USF
        If rngTrouve.Offset(0, 1) <> MdP Then
            VerifMDP = False 'si FAUX
        Else
            VerifMDP = True 'si VRAI
        End If
    End If
End With

End Function



 5.Lancement Automatique du formulaire de saisie de Mot de Passe





Le lancement automatique du formulaire de saisie du Mot de Passe et du Nom d’Utilisateur se fait moyennant la programmation de l’évènement « Open » par le lancement du Formulaire de Saisie, comme il est précisé dans la figure suivante.

workbook vba




Code VBA:
Private Sub Workbook_Open()
'Charge l'Userform en mémoire
Load UserForm1
'Affiche l'Userform
UserForm1.Show
End Sub



6.Possibilité de Donner plusieurs Accès au même fichier

 La façon de vérification du Mot de Passe effectuée dans cet exemple permet de donner plusieurs Accès au fichier en gardant le principe de confidentialité et de sécurité concernant les mots de passe.


Ceci est possible en archivant les mots de Passe et les noms d’utilisateur dans une feuille nommée habilitation.

habilitation vba Excel


Pour plus de sécurité, nous pouvons cacher la feuille habilitation et ne le faire afficher que pour le profil Administrateur.




1 commentaire :

  1. Bonjour,

    Avec cette méthode, cela permet il à plusieurs utilisateurs de se loger en même temps avec des autorisations différentes ?

    Secondement, comment limiter donc les affichages des feuilles de calcul aux différents utilisateurs avec des autorisations différentes pour chaque utilisateurs ??

    Merci de votre réponse

    ambroise.brondino@gmail.com

    RépondreSupprimer