|
|||||||||||||||||||||||||||||||||||||||
| Nom de l'objet | Type d'objet | Icône | Remarques |
txtMotDePasse
|
Zone de texte |
![]() |
C'est dans cette zone que sera tapé le mot de passe. Faites apparaître les propriétés de cet objet et faites en sorte que la propriété Masque de saisie soit réglée sur "Mot de passe" (ceci a pour effet d'afficher uniquement des astérisques lors de la saisie). |
btnOK
|
Bouton de commande |
![]() |
Le bouton de validation. C'est ce bouton qui doit vérifier que le mot de passe saisi est correct. |
btnAnnuler
|
Bouton de commande |
![]() |
Un bouton pour fermer le formulaire si on ne connaît pas le mot de passe. |
Programmation du formulaireOuverture du formulaire
Si le formulaire [frm Password] s'ouvre, c'est qu'un mot de passe va être demandé puis vérifié. On suppose donc qu'à l'ouverture, le mot de passe n'est pas encore connu.
- Ouvrez le formulaire [frm Password] en mode Création.
- Faites apparaître les propriétés du formulaire, et cliquez sur l'onglet Evénement.
- "Entrez" dans l'événement "Sur ouverture", et faites en sorte qu'il reprenne le code suivant :
Private Sub Form_Open(Cancel As Integer) ' Réinitialiser l'état du mot de passe ' (blnPasswordOK est une variable globale) blnPasswordOK = False End SubLe code du bouton OK
- Faites apparaître les propriétés du bouton btnOK, et cliquez sur l'onglet Evénement.
- "Entrez" dans l'événement "Sur clic", et tapez ce qui suit :
Private Sub btnOK_Click() If IsNull(Me.txtMotDePasse) Then MsgBox "Tapez un mot de passe !", vbInformation Me.txtMotDePasse.SetFocus Exit Sub End If If Me.txtMotDePasse = "TopSecret" Then ' Fermer la boîte de dialogue "Identification" DoCmd.Close blnPasswordOK = True Else MsgBox "Mot de passe incorrect.", vbExclamation Me.txtMotDePasse.SetFocus End If End SubComme vous le voyez, 2 conditions sont appliquées :
- La première vérifie qu'un mot de passe a bien été tapé, et ramène sinon sur la zone de saisie.
- La seconde vérifie que le mot de passe est exact, et ferme le formulaire si c'est le cas. Sinon, un message est affiché, et l'utilisateur est à nouveau ramené sur la zone de saisie.
Comme il a été dit plus haut, il ne s'agit pas d'une sécurité ultime ! Vous notez que le mot de passe est simplement tapé en clair dans le code VB. Vous pouvez améliorer le tout en créant une table de mots de passe, et en la lisant par ADO, DAO, SQL ou une fonction de domaine (ce que vous voulez, koä !), mais dans ce cas, n'oubliez pas que l'utilisateur peut y accéder encore plus facilement.
Je vous avais prévenu : le mieux est de passer par la "sécurité utilisateur" :o) !
Le code du bouton Annuler
Ce code sert juste à fermer le formulaire. Il suffit donc d'écrire :
DoCmd.CloseRappelez-vous que la variable blnPasswordOK a été réglée à False lors de l'ouverture du formulaire. Par conséquent, un appui sur le bouton Annuler suppose également que l'utilisateur n'a pas trouvé le mot de passe.
Limiter l'accès à un formulaire ou un étatMaintenant que la gestion du mot de passe est en place, il suffit d'y faire appel lorsqu'on ouvre un formulaire ou un état quelconque.
- Ouvrez un formulaire ou un état.
- Faites apparaître les propriétés (notamment les événements) de ce formulaire ou de cet état.
- Programmez l'événement "Sur ouverture" comme suit :
Private Sub Form_Open(Cancel As Integer) DoCmd.OpenForm "frm Password", acNormal, , , , acDialog Cancel = Not blnPasswordOK End SubLe paramètre acDialog est important :
- acDialog ouvre un formulaire en mode "Boîte de dialogue" (formulaire dit "modal"). Le premier effet est qu'il est impossible de faire quoi que ce soit tant que [frm Password] n'est pas fermé.
- Le second effet se produit dans le code VB ci-dessus. La ligne Cancel = Not blnPasswordOK ne sera exécutée qu'à la fermeture de [frm Password]. De cette façon, on est sûr que le résultat de la variable blnPasswordOK a été défini par [frm Password].
Essayez d'enlever acDialog pour voir !
Par ailleurs, c'est la ligne Cancel = Not blnPasswordOK qui annule l'ouverture du formulaire ou de l'état. Cancel est une variable analysée par Access à la sortie de l'événement Form_Open(). Si Cancel = True, l'événement est annulé (ou plutôt, l'ouverture est annulée). Si Cancel = False, les événements s'enchaînent comme d'habitude. Dans notre cas, il faut annuler si le mot de passe n'a pas été trouvé.
Tester !
Double-cliquez maintenant sur le formulaire ou l'état "sécurisé" : la boîte d'identification s'affiche au préalable, et vous devez taper le mot de passe correct. Ceci fonctionne également si le formulaire ou l'état sont ouverts via Visual Basic.
Les touches finales
Bien sûr, ceci n'empêche pas d'ouvrir vos formulaires en mode Création, ni d'accéder aux tables ou aux requêtes. Pour améliorer le tout, vous pouvez enregistrer votre base au format .MDE (menu Outils / Utilitaires de base de données ; ceci bloquera l'accès aux formulaires, états et modules ; conservez surtout votre original .MDB !).
Encore une fois, tout ceci n'est qu'une protection élémentaire, mais il est vrai que ça peut suffire dans certains cas de figure... Bons tests !
| << 4. Imprimer un état au format PDF | [ Sommaire ] | 6. Maîtriser OpenForm et OpenReport >> |
| Cette section vous intéresse ? Abonnez-vous ! |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
Notions de base Jargon Access :o) Syntaxe SQL Programmation ASP Scripting Runtime Le Grenier [FAQ Access] Les tutoriaux Self-Access Les Assistants Access Les livres sur Access ! |
|
Forums Access Abonnement gratuit Télécharger... |
|
Le saviez-vous ? Une base contient au maximum 32768 objets. De quoi voir venir ! A demain pour une nouvelle astuce ! |