formateur informatique

Verrouiller ou déverrouiller une base de données

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Verrouiller ou déverrouiller une base de données
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :

Abonnez-vous gratuitement à la chaîne Youtube Rossetti Stéphane .
Sujets et formations similaires :


Activer / Désactiver les sécurités

Dans une formation Access précédente, nous avons conçu une interface d'accueil. De même, nous avons restreint les autorisations en personnalisant l'environnement. De fait, nous avons ébauché une application où l'utilisateur peut accéder seulement aux outils proposés par l'écran d'accueil. Mais, nous l'avions évoqué, ces sécurités sont très simples à faire sauter et nous allons le constater. C'est pourquoi, dans cette suite logique, nous proposons de bâtir un petit code VBA capable d'influer sur les propriétés de la base de données. Grâce à lui, seul l'administrateur sera en mesure de verrouiller ou déverrouiller l'environnement.



Source et présentation de la problématique
Pour étayer nos travaux, il est tout d'abord nécessaire de réceptionner la base de données en question. Comme vous pouvez le voir en effet, l'application est verrouillée.

Formulaire Access avec droits restreints et boutons de navigation

Le formulaire d'accueil s'exécute automatiquement à l'ouverture de la base de données. Il propose des boutons permettant de gérer les informations de l'entreprise, en accédant à d'autres formulaires, par simples clics. Et comme vous le remarquez, l'habituel volet des objets Access brille par son absence. De plus les menus et rubans sont réduits à leur plus simple expression. Les boutons permettant usuellement d'enclencher des modifications ou d'accéder au mode conception, ne sont pas disponibles. De plus, les clics droits sont totalement inopérants. Bref, l'application est entièrement sécurisée. Les droits sont restreints. L'utilisateur ne peut utiliser que les outils offerts par l'interface de démarrage. Et pourtant, nous allons le voir, la protection est bien fragile à ce stade.
  • Fermer la base de données,
  • Puis, tout en maintenant la touche MAJ enfoncée, double cliquer de nouveau sur le fichier téléchargé,
Nous procédons ainsi à l'ouverture de la base de données. Mais cette fois, l'écran d'accueil ne s'impose pas. Pire encore, toutes les fonctionnalités de conception, dont le volet des objets Access, se rendent de nouveau disponibles.

Cette simple action a suffi à faire sauter tous les verrous. Pour rappel, la touche Maj est aussi connue sous la désignation anglaise Shift. Elle est matérialisée par une flèche verticale orientée vers le haut. Elle est située au-dessus de la touche Ctrl sur le clavier.

Faire sauter la protection des bases de données Access avec la touche MAJ au démarrage

Désormais donc, n'importe quel utilisateur est en mesure d'intervenir sur la structure et les fonctionnalités de la base de données. C'est ce que nous devons empêcher pour offrir l'application en production.



Neutraliser la touche Maj du clavier
Comme nous l'évoquions, un bout de code VBA suffit à régler le problème en agissant sur les propriétés de la base de données en cours. Mais à tout moment, un administrateur doit pouvoir accéder à sa structure, pour engager des modifications ou évolutions nécessaires. C'est pourquoi, ces propriétés doivent changer d'état facilement par le biais d'un formulaire sécurisé. Et nous avons préparé le travail. Ainsi, nous focaliserons notre attention sur les instructions Visual Basic.
  • Dans le volet des objets Access, double cliquer sur le formulaire F_Accueil pour l'exécuter,
Bouton de formulaire Access pour accéder aux réglages administrateur sur mot de passe

Nous avions construit ce formulaire lors d'une formation. Il est doté de cinq boutons. Les quatre premiers permettent d'accéder à des formulaires respectifs pour gérer les clients ou les articles. Le dernier, sur la droite de l'interface, permet simplement de quitter l'application. Depuis cette formation, nous avons ajouté un bouton particulier. Il est situé dans la barre de titre. Il est matérialisé par l'icône d'un petit engrenage. Il est nommé Reglages.
  • Cliquer sur le bouton des réglages,
Une boîte de dialogue apparaît. Elle invite l'utilisateur à saisir le mot de passe administrateur. Fort heureusement, l'accès aux paramétrages est donc sécurisé. Comme nous l'avions appris, c'est une macro Access qui est déclenchée. Elle exploite une instruction conditionnelle dans laquelle elle scrute la saisie de l'utilisateur. Et c'est la fonction Access Bentrée qui offre une telle boîte de message.
  • Saisir le mot de passe suivant : abc123,
  • Puis, valider,
Le mot de passe étant reconnu, l'accès au formulaire est autorisé.

Formulaire administration Access pour autorisations et droits utilisateurs

En cas de saisie erronée, un message aurait été adressé à l'utilisateur et le formulaire ne se serait pas déclenché. Trois boutons sont disponibles. Le dernier, sur la droite, permet comme précédemment de fermer l'application. Le premier doit réactiver la touche Maj à l'ouverture. Le deuxième doit empêcher cette même touche de faire sauter les protections.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir Mode création,
Nous basculons ainsi dans la vue du formulaire en conception. Ce sont des procédures de code VBA qui doivent être déclenchées au clic sur l'un et l'autre bouton. Nous devons donc gérer cet évènement. Et pour cela, la feuille de propriétés doit être visible. Comme vous le savez, c'est le bouton du même nom dans le ruban contextuel Création, qui permet de l'afficher ou de la masquer.
  • Cliquer sur le premier bouton pour le sélectionner,
En consultant sa feuille de propriétés, vous remarquez qu'il est nommé gerer_clients. Ce nom n'est absolument pas dédié.
  • Activer l'onglet Toutes de sa feuille de propriétés,
  • Remplacer le nom gerer_clients par : activer_maj,
  • Sélectionner le deuxième bouton et remplacer le nom suppr_client par : desactiver_maj,
  • Sélectionner de nouveau le premier bouton,
  • Puis, activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer alors sur le petit bouton placé à l'extrémité droite de son événement Au clic,
Déclencher exécution code VBA Access au clic sur bouton de formulaire

Une boîte de dialogue apparaît.
  • Dans la liste, choisir Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur de code Visual Basic Access, entre les bornes de la procédure événementielle activer_maj_Click. Le code VBA que nous y ajouterons se déclenchera au clic sur ce premier bouton. Nous devons préparer la procédure du deuxième bouton.
  • Revenir sur le formulaire par le raccourci ALT + F11 par exemple,
  • Sélectionner le deuxième bouton,
  • Cliquer sur le petit bouton de son événement Au clic,
  • Dans la boîte de dialogue, choisir Générateur de code et valider par Ok,
Nous retournons de nouveau dans l'éditeur VBA Access. Mais cette fois, nous sommes placés entre les bornes de la procédure événementielle desactiver_maj_Click. Toutes deux doivent influer sur la même propriété de la base de données, mais le réglage est inverse. Plutôt que d'écrire deux fois le même code, nous proposons de créer une procédure commune, attendant la valeur à adapter en paramètre. Mais pour piloter une base de données, une référence doit être présente dans le projet.
  • En haut de l'éditeur VBA, cliquer sur le menu Outils,
  • Dans la liste choisir Références,
Référence et librairie Access ADO pour piloter les objets de base de données par le code VBA



Cette boîte de dialogue rappelle les références déclarées pour le projet en cours. C'est la référence à la librairie Microsoft Office 16.0 Access database engine Object Library qui est nécessaire. Nous l'avions inscrite en amont. Le numéro (16) dépend de la version d'Office installée sur votre ordinateur. Et justement, pour des versions non mises à jour, la référence nécessaire peut être Microsoft ActiveX Data Object Library 16.0. Là encore, le numéro dépend de la version.
  • Fermer la boîte de dialogue des références en cliquant sur le bouton Ok,
  • A la suite dans la feuille de code, créer la procédure touche_maj, comme suit :
Private Sub touche_maj(nom_prop As String, valeur_prop As Boolean)

Dim base As Database
Set base = Application.CurrentDb
base.Properties(nom_prop) = valeur_prop

End Sub


Cette procédure attend deux paramètres. Le premier correspond au nom de la propriété à régler. Le second est la valeur à lui attribuer. Cette valeur dépend du bouton cliqué. Nous créons ensuite un objet de base de données. C'est pourquoi nous le déclarons comme un Database. Cette déclaration est rendue possible par la référence précédemment évoquée. Puis, nous instancions la classe permettant d'hériter des propriétés et méthodes. Pour cela, nous exploitons le mot clé Set. La méthode CurrentDb de l'objet Application permet de pointer sur la base de données en cours. De fait, notre objet Base a désormais hérité de la classe en question. C'est ainsi que nous pouvons exploiter sa propriété Properties. En paramètre, nous lui indiquons l'attribut à régler. Puis, nous l'affectons à la valeur attendue par la procédure, passée par l'un ou l'autre bouton.

Il nous reste donc à appeler cette procédure au clic sur ces boutons.
  • Adapter les deux procédures événementielles comme suit :
Private Sub activer_maj_Click()

touche_maj 'AllowBypassKey', True
MsgBox 'La touche Maj a été activée'


End Sub

Private Sub desactiver_maj_Click()

touche_maj 'AllowBypassKey', False
MsgBox 'La touche Maj a été désactivée'


End Sub


Dans les deux cas, nous appelons la procédure touche_maj. En premier paramètre, nous lui passons le nom de la propriété à modifier. AllowBypassKey est son nom. En deuxième paramètre, nous lui passons la valeur booléenne. A true, nous activons la touche. A False, nous la désactivons. Puis, nous affichons un message de confirmation à l'administrateur, grâce à la fonction VBA MsgBox.
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + F11),
  • L'enregistrer à son tour puis l'exécuter (F5),
  • Cliquer alors sur le bouton pour désactiver la touche Maj,
  • Puis, cliquer sur le troisième bouton pour quitter l'application Access,
  • Depuis le dossier de téléchargement, avec la touche Maj enfoncée, double cliquer sur le fichier pour rouvrir la base de données,
Comme vous le constatez, l'application reste cette fois complètement verrouillée. Le volet des objets Access est absent. Les fonctionnalités des rubans sont réduites à leur plus simple expression.
  • Dans le formulaire, cliquer de nouveau sur le bouton des réglages,
  • Saisir le mot de passe : abc123,
  • Cliquer cette fois sur le bouton pour activer la touche Maj,
  • Cliquer ensuite sur le bouton pour fermer l'application Access,
  • Puis, touche Maj enfoncée, double cliquer sur le ficher pour rouvrir la base de données,
La touche Maj est de nouveau opérationnelle. L'écran d'accueil est neutralisé et toutes les fonctionnalités de conception sont rendues disponibles. Grâce à un petit code VBA, nous sommes donc parvenus à créer une petite interface de gestion administrateur. Elle permet de restreindre ou de libérer les accès. Cette étape est importante pour les développeurs professionnels souhaitant distribuer leurs applications en entreprise.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Google+
Partager sur Twitter
Partager sur LinkedIn