Empêcher l’utilisateur de quitter l’application

Comment faire en sorte que l’utilisateur ne puisse pas quitter l’application Access en cliquant sur la croix de fermeture ?

Une solution

Il y a plusieurs approches possibles. L’une d’elles consiste à désactiver la croix de fermeture à l’aide des API Windows. Mais l’inconvénient est qu’elle ne sera pas nécessairement compatible avec Access 2007, qui  ne gère plus les menus de la même manière. Et il n’existe pas non plus d’événement Sur fermeture de la base de données, qui aurait pu nous simplifier la vie !

Par contre, on peut aménager ce principe, parce que les formulaires, eux, ont un événement Sur libération (Unload) qui se produit avant la fermeture du formulaire, et qui peut être annulé. Et si on annule la fermeture d’un formulaire, on annule fatalement celle de la base de données !

Il nous suffit donc de prévoir un formulaire dont le seul rôle sera de « surveiller » sa propre fermeture…

Conseil
Si vous avez déjà un formulaire principal (un menu, une page d’accueil), vous pouvez juste aménager ce formulaire existant. Il suffit de reprendre uniquement le code VBA donné plus bas, et d’ignorer la partie Macro.

Le formulaire

  1. Construisez un formulaire quelconque (en mode Création, simplement).
    Ce formulaire s’appelle frm Shutdown pour la suite.
  2. Paramétrez ce formulaire comme vous le souhaitez. De toute façon, l’utilisateur ne le verra pas !
  3. Programmez l’événement Sur libération du formulaire comme ceci :

La macro d’ouverture

Il s’agit ensuite d’ouvrir ce formulaire à chaque démarrage de la base de données :

  1. Construisez une nouvelle macro.
  2. Ajoutez l’action suivante à votre macro :Notez que le formulaire est ouvert en mode Masqué.
    Mon exemple de macro contient 2 instructions OuvrirFormulaire. La seconde n’a aucun rôle ici, elle ouvre un formulaire de rappel de clients dont il a été question dans cet article.
  3. Enregistrez votre macro sous le nom AutoExec.
  4. Fermez votre base de données, rouvrez-la, et essayez de quitter !
Rappel
Lorsqu’une macro s’appelle AutoExec (les majuscules/minuscules n’étant pas importantes), elle est exécutée automatiquement à l’ouverture de la base de données. Il ne peut y avoir qu’une seule macro AutoExec, bien sûr, mais celle-ci peut exécuter plusieurs actions.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *