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):
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):
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 :
· 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.
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.
Pour plus de sécurité, nous pouvons cacher la feuille habilitation et ne le faire afficher que pour le profil Administrateur.
Bonjour,
RépondreSupprimerAvec 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