formateur informatique

Désactiver les menus pour une application Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Désactiver les menus pour une application Access
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 :


Protéger l'application - Masquer les menus

Dans cette formation VBA Access, nous finalisons l'application précédente pour la verrouiller complètement. Nous avions conçu un formulaire d'accueil pour guider l'utilisateur. Nous lui avions greffé une interface d'administration accessible par mot de passe. Celle-ci permet d'activer ou de désactiver l'effet de la touche Maj du clavier. Comme vous le savez, cette dernière permet de faire sauter toutes les protections. Malgré ces paramétrages, l'application n'est pas encore totalement sécurisée. Une personne aguerrie peut atteindre ses ressources sans difficultés et les endommager. Ce sont ces dernières configurations que nous proposons de régler dans cette formation.



Source et présentation de l'objectif
Il est tout d'abord nécessaire de récupérer l'application Access offrant cet écran d'accueil. Comme vous le remarquez, le formulaire d'accueil se propose par défaut dans un environnement épuré. Le volet de navigation est absent. De fait, les objets Access, comme les tables et formulaires, ne sont pas accessibles. Les fonctionnalités des rubans subsistant sont réduites à leur plus simple expression. Ainsi, il n'est pas possible d'accéder au mode création du formulaire. De plus la touche Maj est désactivée. Si vous redémarrez la base de données en l'enfonçant, les protections restent actives et l'environnement inchangé. Mais quelques failles demeurent.
  • Enfoncer la touche F11 du clavier,
Sécurité Access perturbée par la touche F11 du clavier qui affiche le volet de navigation

Aussitôt, le volet de navigation réapparaît. De fait, tous les objets qui étaient protégés jusqu'alors, ne le sont plus.
  • Réaliser le raccourci clavier Alt + F11,
Nous basculons ainsi dans l'éditeur de code VBA Access. Et à ce titre, vous remarquez la présence des instructions destinées à l'administrateur pour activer ou désactiver la touche Maj du clavier. Ce comportement est fort dangereux. L'utilisateur lamdba ne doit pas pouvoir accéder à ces ressources sensibles. Et ce n'est pas tout.
  • Fermer l'éditeur VBA pour revenir sur le formulaire Access,
  • En haut de la fenêtre, cliquer sur l'onglet Fichier,
  • Dans la liste, choisir Options de confidentialité,
  • Dans la boîte de dialogue qui suit, sélectionner la rubrique Base de données active,
  • Avec l'ascenseur vertical, faire défiler la liste du centre jusqu'à atteindre la section Navigation,
Possibilité de faire sauter les protections Access à cause des options de confidentialité

Comme vous le constatez, n'importe quelle personne peut faire sauter tous les verrous. Il suffit de cocher les cases décochées. Ainsi, toutes les fonctionnalités permettant d'afficher les objets en conception réapparaissent.

Nous devons donc empêcher les actions au clavier pour notamment intercepter la touche F11 qui est cruciale. De même, nous devons définitivement masquer les menus et leurs fonctionnalités. De cette manière, seul l'administrateur, en réactivant la touche Maj, pourra de nouveau atteindre le coeur de la base de données.



Masquer les menus et rubans
Nous l'avons déjà exploité à maintes reprises, l'objet DoCmd est précieux en programmation VBA Access. C'est l'une de ses méthodes qui permet de manipuler les barres d'outils ou rubans. Mais l'instruction VBA doit être judicieusement placée. Elle doit intervenir au chargement de l'écran d'accueil (Form_Load). Pour réaliser une simulation en bonne et due forme, nous proposons d'agir comme un administrateur.
  • Sur le formulaire d'accueil, cliquer sur le petit bouton des réglages,
Il est placé dans la barre de titre. Il est matérialisé par l'icône d'un petit engrenage.
  • Dans la boîte de dialogue qui apparaît, taper le mot de passe : abc123, puis valider,
Nous accédons ainsi au formulaire d'administration.

Remarque : Comme vous l'avez constaté, le mot de passe que nous avons tapé n'est pas encodé. Nous avons simplement pris plaisir à exploiter les macros et la fonction Access Bentrée. Pour une saisie encryptée, la solution consiste à appeler un autre formulaire. Dès lors, les zones de texte peuvent être paramétrées, notamment par le code VBA, pour masquer chacun des caractères inscrit.

Formulaire administration Access pour protéger les données des utilisateurs

Nous avons finalisé ce formulaire dans la formation précédente.
  • Cliquer sur le premier bouton pour activer la touche Maj du clavier,
Un message de confirmation apparaît aussitôt.
  • Valider ce message puis cliquer sur le dernier bouton pour fermer l'application,
  • A la racine du dossier de téléchargement, tout en maintenant la touche Maj enfoncée, double cliquer sur le fichier de la base de données pour le rouvrir dans Access,
Comme vous le constatez, grâce à ce paramétrage administrateur, nous avons fait sauter toutes les protections. Le formulaire d'accueil ne se déclenche plus. Le volet de navigation est disponible. Il permet d'accéder à tous les objets en conception.
  • Dans ce volet de navigation, cliquer droit sur le formulaire F_Accueil,
  • Dans le menu contextuel, choisir Mode création,
Nous basculons ainsi dans la vue en conception du formulaire d'accueil. La feuille de propriétés doit être visible. C'est le bouton du même nom dans le ruban contextuel Création qui permet de l'afficher ou de la masquer. Le formulaire est actif par défaut. De fait, la feuille de propriétés présente ses attributs.
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton à l'extrémité droite de son événement Sur chargement,
  • Dans la boîte de dialogue qui suit, choisir Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur de code VBA Access, plus précisément entre les bornes de la procédure événementielle Form_Load. Elle est destinée à exécuter le code VBA qu'elle contient au chargement du formulaire. Et c'est précisément ce que nous souhaitons pour neutraliser les menus en amont.
  • Entre les bornes de la procédure, saisir l'instruction VBA suivante :
DoCmd.ShowToolbar 'Ribbon', acToolbarNo

Nous exploitons donc la méthode ShowToolbar de l'objet VBA DoCmd. Elle requiert deux arguments. Le premier Ribbon désigne les rubans. La valeur passée en second paramètre indique de les masquer.
  • Enregistrer les modifications (CTRL + S),
  • Basculer sur le formulaire (ALT + F11),
  • Enfoncer la touche F5 du clavier pour l'exécuter,
Masquer les rubans Access par le code VBA pour protéger application

Comme vous le remarquez, les rubans et menus ont effectivement disparu. Et comme ce formulaire est programmé pour se lancer au démarrage de l'application, cela signifie que nous avons bien verrouillé et protégé la base de données.



Interdire les raccourcis clavier
Comme nous le disions, pour une protection optimale, nous devons empêcher l'utilisateur de réaliser certaines combinaisons au clavier. La touche F11 est particulièrement ciblée. Elle permet d'accéder au volet de navigation et par combinaison, à l'éditeur VBA. La solution est apportée, une fois de plus, par Visual Basic. Mais un attribut du formulaire doit préalablement être réglé. Il consiste à permettre l'interception des touches du clavier.
  • Dans le volet de navigation, cliquer droit sur le formulaire F_Accueil,
  • Dans le menu contextuel, choisir Mode création,
  • Cliquer à l'intersection des règles, en haut à gauche du formulaire, pour le sélectionner,
Sélectionner un formulaire Access pour le paramétrer avec la feuille de propriétés
  • Activer l'onglet Toutes de sa feuille de propriétés,
  • Tout en bas de la liste, régler son attribut Aperçu des touches sur Oui,
Propriété aperçu des touches de formulaire Access pour intercepter les raccourcis clavier par le code VBA

Sans ce réglage en Amont, il n'est pas possible d'intercepter les raccourcis clavier par le code VBA.
  • Activer désormais l'onglet Evénement de la feuille de propriétés,
  • Puis, cliquer sur le petit bouton à l'extrémité de son événement Sur touche appuyée,
  • Dans la boîte de dialogue qui suit, choisir Générateur de code et valider par Ok,
Nous sommes de retour dans l'éditeur de code VBA Access. Mais cette fois, nous sommes placés entre les bornes de la procédure événementielle Form_KeyDown. Son code doit se déclencher dès qu'une touche du clavier est enfoncée. Notez la présence du paramètre KeyCode dans les arguments de la procédure. Chaque touche est reconnue par une valeur numérique. Cet entier est ainsi connu au moment du traitement.
  • Entre les bornes de la procédure, ajouter l'instruction conditionnelle suivante :
If KeyCode = vbKeyF11 Then
KeyCode = 0
End If


vbKeyF11 est une constante correspondant à une valeur numérique. Et comme vous l'avez compris, elle désigne la touche F11 du clavier. Nous comparons sa valeur avec celle transmise par la variable KeyCode au moment de l'action au clavier. Si les deux correspondent, nous en déduisons que l'utilisateur a effectivement enfoncé cette touche interdite. Nous réinitialisons le paramètre KeyCode à zéro. De fait, nous transcrivons la touche ou la combinaison pour la neutraliser.
  • Enregistrer les modifications et basculer sur le formulaire,
  • L'enregistrer à son tour et l'exécuter,
  • Réaliser le raccourci clavier Alt + F11,
Plus rien ne se produit en effet. L'éditeur VBA ne s'affiche plus. Sachant que les menus sont masqués et que nous pouvons désactiver la touche Maj, nous avons donc réussi à parfaitement sécuriser l'application Access.
  • Sur le formulaire, cliquer sur le petit bouton des réglages administrateur,
  • Taper le mot de passe : abc123,
  • Cliquer alors sur le bouton Désactiver la touche Maj,
  • Valider le message de confirmation et cliquer sur le bouton pour fermer l'application,
  • A la racine du dossier de téléchargement, touche Maj maintenue enfoncée, double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
Base de données Access complètement verrouillée et protégée sans les droits administrateur

Plus rien n'y fait désormais. La base de données est totalement verrouillée et protégée. Les menus et rubans sont invisibles. Il n'est donc plus possible d'accéder aux options de confidentialité. Le volet de navigation est indisponible. Il n'est donc pas possible d'atteindre les ressources des objets. Si vous enfoncez la touche F11 du clavier rien ne se produit. De même, la combinaison ALT + F11 ne permet plus d'accéder à l'éditeur VBA Access. Pour une protection complète, il est bien entendu nécessaire de répliquer ces réglages sur tous les formulaires autorisés par l'écran d'Accueil.

Désormais donc, l'administrateur est le seul maître à bord. S'il réactive la touche Maj du clavier par son interface de gestion, il peut de nouveau accéder aux ressources de la base de données.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



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