Note utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives
 

 

 

L'objectif de ce tutoriel est de vous montrer la construction d'un formulaire d'identification, avec mot de passe, afin de limiter l'accès à d'autres formulaires ou états.

 

Présentation

Ce formulaire d'identification est évidemment une protection élémentaire !

  • L'utilisateur ouvre un formulaire frm_clients ou un état etat_clients
  • Au préalable, un formulaire "Mot de passe" s'affiche. Tant que l'utilisateur ne fourni pas un mot de passe correct, il n'accède pas au formulaire frm_clients ou à l'état etat_clients

 

Nous ferons également en sorte que le formulaire d'identification soit réutilisable, afin d'éviter d'en créer un pour chaque formulaire ou état à "protéger".

 

 

Le module

Nous allons simplifier la gestion du mot de passe en passant par une variable globale, laquelle indiquera si le mot de passe a bien été renseigné ou non par l'utilisateur.

Dans la fenêtre de Base de données, cliquez sur l'onglet "Modules", puis sur le bouton "Nouveau"

 

 

Microsoft Visual Basic se lance...

 

Saisissez le code suivant, juste au dessous de la ligne "Option Compare Database"

Public blnPasswordOK As Boolean

 

 

Cliquez sur la disquette afin de sauvegarder...

 

 

Et nommez ce module "modIdentification"

 

 

On déclare ici une variable globale (donc visible depuis tout endroit de la base de données).

Puisque ette variable est booléenne : elle vaudra False (Faux) tant que le mot de passe n'est pas trouvé, et True (Vrai) si le mot de passe a été entré correctement.

 

 

Création du formulaire d'identification

Dans le menu "Formulaires", cliquez sur "Créer un formulaire en mode Création"

 

 

Créez un formulaire à votre goût... Désolé pour le logo, mais c'est quelque chose que j'avais créé pour mon boulot 7

Celui-ci va comporter 3 éléments essentiels à son bon fonctionnement

  • une zone de texte qui permettra à l'utilisateur de saisir le mot de passe
  • un bouton permettant de valider le mot de passe
  • un bouton permettant de fermer la fenêtre ou de quitter la base si l'utilisateur ne connaît pas le mot de passe.

 

 

La zone de texte txt_MotDePasse

Dans la boîte à outils, cliquez sur le bouton "Zone de texte"

 

 

Cliquez quelque part sur votre formulaire afin de placer une nouvelle zone de texte...

 

 

Faites un clic-droit sur celle ci, puis sélectionnez le menu "Propriétés"

 

 

Dans l'onglet "Autres", nommez cette zone de texte "txt_MotDePasse"

 

 

Dans l'onglet "Données", cherchez la ligne "Masque de saisie", puis cliquez sur le bouton "..." de gauche.

 

 

Choisissez un masque de saisie de type "Mot de passe" afin que les caractères soient remplacés par des astérisques pendant la saisie par l'utilisateur.

Cliquez ensuite sur le bouton "Terminer"

 

 

Mettez en forme la zone de texte, à la taille et aux couleurs qui vous plaisent...

 

 

Le bouton de validation du mot de passe

Commencez tout d'abord par désactiver les assistants de contrôles (au cas où il serait activé) en cliquant sur le bouton baguette magique dans la boîte à outils.

 

 

Cliquez ensuite sur le bouton "Bouton de commande"

 

 

Puis cliquez quelque part dans votre formulaire afin de créer un nouveau bouton...

 

 

Mettez le en forme comme il vous plaîra...

 

 

Puis faites un clic droit sur lui et sélectionnez "Propriétés"

 

 

Nommez-le btn_Valider

 

 

Réactivez ensuite les assistants de contrôles

 

 

Le bouton permettant de quitter

Cliquez à nouveau sur "Bouton de commande" dans la boîte à outils...

 

 

L'utilisateur n'ayant pas le mot de passe sera contraint de quitter la base, sélectionnez "Quitter une application" dans la catégorie "Applications", puis cliquez sur "Suivant >"

Nous verrons plus tard comment modifier cette action et faire simplement en sorte que le formulaire d'identification soit fermé.

 

 

Indiquez le texte du bouton "Quitter", ou mettez une image, comme vous le sentez, puis "Suivant >"

 

 

Nommez ce bouton bnt_Quitter, puis cliquez sur "Terminer"

 

 

Voici notre bouton...

 

 

Mettez-le en forme...

 

 

La programmation du formulaire d'identification

Bien. Le formulaire d'identification est créé, ainsi que tous ses composants nécessaires à son fonctionnement.

Reste à programmer le tout...

Faites un clic droit sur le carré situé à la jonction des règles du formulaire, et sélectionnez "Propriétés"

Si le carré n'est pas visible, vous devez afficher les règles (menu Affichage, puis Règles)

 

 

Cliquez sur l'onglet Evénement, puis, sur la ligne "Sur Ouverture", sélectionnez "[Procédure événementielle]" dans la liste déroulante.

 

 

Cliquez ensuite sur le bouton "..." situé à gauche, afin de lancer Visual Basic.

 

 

Saissez le code :

blnPassWordOK = False

Entre "Private Sub Form_Open (Cancel As Integer)" et "End Sub"

 

 

Puis sauvegardez les modifications avant de fermer la fenêtre de Visual Basic.

 

 

Accèdez aux propriétés du bouton de validation...

 

 

Ajoutez une procédure événementielle "sur clic", puis, comme tout à l'heure, ouvrez Visual Basic en cliquant sur le bouton "..."

 

 

Copiez/Collez le code suivant entre "Private Sub btn_Valider_Click()" et "End Sub"

If IsNull(Me.txt_MotDePasse) Then
MsgBox "Tapez un mot de passe !", vbInformation
Me.txt_MotDePasse.SetFocus
Exit Sub
End If

If Me.txt_MotDePasse = "secret" Then
DoCmd.Close
blnPasswordOK = True
Else
MsgBox "Mot de passe incorrect.", vbInformation
Me.txt_MotDePasse.SetFocus
End If

"secret" est le mot de passe ! Modifiez-le à votre guise

 

 

Sauvegardez les modifications, puis fermez la fenêtre de Visual Basic.

 

 

Apparence du formulaire d'identification

Puisque ce formulaire ne sera pas un formulaire comme les autres, pensez à personnaliser son apparence.

Clic droit sur le carré supérieur gauche, puis "Propriétés"

 

 

Dans l'onglet format, voici quelques options qu'il peut être intéressant de paramétrer...

 

 

Et dans l'onglet "Autres"

  • Fen indépendante : permet de laisser le formulaire affiché au premier plan
  • Fen modale : permet de laisser le formulaire actif jusqu'à ce qu'il soit fermé.

 

 

Sauvegardez ensuite le formulaire, en le nommant frm_Identification

 

 

Protéger l'accès à un formulaire ou à un état

Maintenant que notre formulaire d'identification est créé et programmé, il nous est possible de protéger l'accès des formulaires ou états de la base de données.

Dans mon exemple, je souhaite protéger l'accès au formulaire frm_clients

Je l'ouvre en mode Création...

 

 

Clic droit sur le carré supérieur gauche afin d'accéder aux propriétés du formulaire...

 

 

Je créé une procédure événementielle sur ouverture, puis je clique sur "..." afin de lancer Visual Basic

 

 

Copiez/collez le code suivant entre "Private Sub Form_Open (Cancel As Integer)" et "End Sub" :

DoCmd.OpenForm "frm_Identification", acNormal, , , , acDialog
Cancel = Not blnPasswordOK

 

 

Testez !!!

Essayez d'ouvrir le formulaire protégé frm_clients

 

 

Le formulaire d'identification sera lancé...

 

 

Vérifiez l'affichage du message d'alerte de mot de passe erroné en tapant nimporte quoi...

 

 

Vérifiez l'affichage d'alerte d'absence de saisie en ne tapant rien et en cliquant sur Valider...

 

 

Puis tapez le mot de passe correct ("secret" dans l'exemple) : le formulaire frm_clients s'ouvre :-)

 

 

Ne pas quitter la base en cas d'annulation

Dans mon exemple, j'ai fait le choix cruel et sans pitié de provoquer la fermeture complète de la base de donnée si l'utilisateur clique sur le bouton "Quitter" en raison d'un trou de mémoire.

Si vous préférez que le bouton "Quitter" provoque simplement une fermeture du formulaire d'identification et une annulation de l'ouverture du formulaire protégé, modifiez la procédure événementielle sur clic du bouton btn_Annuler.

 

 

Dans VisualBasic, remplacez la commande "DoCmd.Quit"

 

 

Par "DoCmd.Close" puis sauvegardez les modifications

 

 

Conclusion

Je le répète, cette protection est une protection de base, car, comme vous avez pu le constater, le mot de passe figure en clair dans le code.

Cette solution demeure tout de même intéressante si vous souhaitez limiter les fausses manipulations, ou rendre l'accès à une information plus difficile.

Elle a l'avantage d'être esthétique et facile à répliquer sur de nombreux formulaires ou états à l'intérieur d'une même base de données...

Si vous le souhaitez, vous pouvez télécharger la base de donnée d'exemple en cliquant sur le bouton ci-dessous :

download

 

 

 

 

1000 caractères restants


Gravatar
Eric
C'est vraiment parfait et très clair, grand merci !
Par contre j'appelle le formulaire protégé depuis un bouton d'un autre formulaire : je clique, apparait la fenêtre d'identification et quand je clique sur "fermer" cela génère un message d'erreur car il ne peut ouvrir le formulaire cible. Une idée pour une solution ?
Encore mille mercis !!!!

Gravatar
Greg [STAFF]
Merci :)

Tu peux m'envoyer le morceau de code de ton bouton par le formulaire du site (Rubrique A propos/Nous contacter), je regarderai :)

Gravatar
EME
Merci merci merci !!!
Gravatar
Legrand
Tout simplement MERCI et Bravo

cela fonctionne Tres bien et les explications sont Tres clair :-)