Vous pouvez utiliser les macros Access pour créer des menus contextuels personnalisés qui s’affichent lorsque vous cliquez avec le bouton droit sur des formulaires, des états ou des contrôles individuels. Vous pouvez également créer des menus personnalisés qui s’affichent sur le ruban pour des formulaires ou des états spécifiques.
Pour créer un menu à l’aide de macros, vous effectuez trois main étapes :
-
Create un objet macro avec submacros contenant les commandes de menu.
-
Create un autre objet macro qui crée le menu lui-même.
-
Attachez le menu à un contrôle, à un formulaire, à un état ou à la base de données dans son ensemble.
Les sections suivantes vous guident tout au long de ces étapes en détail.
Conseil : Si vous souhaitez savoir comment créer des menus contextuels personnalisés dans Access à l’aide de code Visual Basic pour Applications (VBA), consultez l’article Create un menu contextuel pour un formulaire, un contrôle de formulaire ou un état.
Étape 1 : Create un objet macro avec des sous-macros qui contiennent les commandes de menu
Dans cette étape, vous créez un objet macro avec submacros, dont chaque sous-macro sera une commande distincte dans votre menu contextuel.
Qu’est-ce qu’une sous-macro ?
Vous pouvez utiliser une sous-zone dans un objet macro pour définir un ensemble d’actions de macro. Les submacros au sein d’un objet macro peuvent être appelés séparément de différents événements de contrôle et d’objet. Les sous-macros individuels d’un objet macro ont chacun un nom unique et peuvent contenir une ou plusieurs actions de macro.
-
Sous l’onglet Créer, accédez au groupe Macros et code, puis cliquez sur Macro.
-
Pour chaque commande souhaitée dans votre menu contextuel personnalisé :
-
Ajoutez une instruction Macro Submacro à la fenêtre de création de macro et nommez la sous-macro ce que vous souhaitez afficher dans le menu contextuel (par exemple, « Imprimer » ou « Actualiser »).
Conseil : Pour créer une touche d’accès afin de pouvoir utiliser le clavier pour choisir la commande, tapez une esperluette (&) devant la lettre que vous souhaitez utiliser comme touche d’accès dans le nom de la commande (par exemple, « &Actualiser »). Cette lettre sera soulignée dans le menu.
-
Dans la sous-zone, sélectionnez la première action que vous souhaitez effectuer lorsque vous cliquez sur la commande dans le menu contextuel.
-
Si vous souhaitez effectuer d’autres actions lorsque vous sélectionnez cette commande, ajoutez-les en tant qu’actions de macro distinctes dans la même sous-zone.
-
-
Enregistrez et nommez l’objet macro, par exemple mcrShortcutMenuCommands.
L’illustration suivante montre un exemple d’objet macro avec trois sous-macros pour un menu personnalisé ou un menu contextuel.
Étape 2 : Create un deuxième objet macro qui crée le menu
Cette étape peut sembler redondante, mais pour créer le menu contextuel à partir de l’objet macro que vous avez créé à l’étape 1, vous devez créer un deuxième objet macro qui contient l’action de macro AjouterMenu. Cette action de macro est parfois appelée « macro de menu ».
-
Sous l’onglet Créer, accédez au groupe Macros et code, puis cliquez sur Macro.
-
Dans la zone de liste déroulante Ajouter une nouvelle action de la fenêtre de conception de macro, sélectionnez AjouterMenu.
-
Dans la zone Nom du menu de l’action de macro AjouterMenu , tapez le nom du menu (par exemple, « Commandes de formulaire »). Cet argument n’est pas obligatoire, mais il est recommandé si, à l’étape 3, vous envisagez d’ajouter le menu à un onglet ruban (par exemple, l’onglet Compléments d’un formulaire ou d’un état). Si le menu est ajouté en tant que menu contextuel à l’étape 3, l’argument Nom du menu est ignoré.
-
Dans la zone Nom de la macro de menu , entrez le nom de l’objet macro que vous avez créé à l’étape 1.
-
Enregistrez et nommez ce deuxième objet de macro, par exemple mcrAddShortcutMenu.
L’illustration suivante montre un exemple d’objet macro de menu qui crée le menu que nous avons conçu à l’étape 1.
Étape 3 : Attacher le menu à un contrôle, un formulaire, un état ou une base de données
Selon l’emplacement où vous souhaitez que le menu s’affiche, utilisez une ou plusieurs des procédures suivantes.
Ajouter le menu à l’onglet Add-Ins d’un formulaire ou d’un état
Utilisez cette procédure si vous souhaitez que le menu s’affiche sous l’onglet Compléments pour un formulaire ou un état spécifique.
-
Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou l’état dans lequel vous souhaitez afficher le menu, puis cliquez sur Mode Création.
-
Sous l’onglet Créer, dans le groupe Outils, cliquez sur Feuille de propriétés.
-
Sélectionnez l’objet entier en sélectionnant Formulaire ou État dans la liste en haut du volet Office Feuille de propriétés.
-
Sous l’onglet Autre de la feuille de propriétés, dans la zone de propriété Barre de menus, tapez le nom de l’objet de macro que vous avez créé à l’étape 2 (dans cet exemple, « mcrAddShortcutMenu »).
-
Enregistrez les modifications apportées à votre formulaire ou rapport.
La prochaine fois que vous ouvrez le formulaire ou l’état, l’onglet Compléments s’affiche dans le ruban. Cliquez sur l’onglet pour afficher le menu, comme illustré dans l’illustration suivante :
Pour plus d’informations sur les techniques de personnalisation du ruban, telles que l’ajout d’onglets personnalisés ou le masquage des onglets par défaut, consultez l’article Create un ruban personnalisé dans Access.
Ajouter le menu en tant que menu contextuel pour un formulaire, un état ou un contrôle
Utilisez cette procédure si vous souhaitez que le menu s’affiche lorsque vous cliquez avec le bouton droit sur un formulaire, un état ou un contrôle spécifique.
-
Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou l’état dans lequel vous souhaitez afficher le menu contextuel, puis cliquez sur Mode Création.
-
Sous l’onglet Créer, dans le groupe Outils, cliquez sur Feuille de propriétés.
-
Sélectionnez le contrôle ou l’objet auquel vous souhaitez attacher le menu contextuel.
Pour sélectionner l’objet entier, sélectionnez Formulaire ou État dans la liste située en haut du volet Office Feuille de propriétés.
-
Sous l’onglet Autre de la feuille de propriétés, dans la zone de propriété Barre de menus contextuels , tapez le nom de l’objet macro que vous avez créé à l’étape 2 (dans cet exemple, « mcrAddShortcutMenu »).
-
Vérifiez que la propriété Menu contextuel est définie sur Oui.
-
Enregistrez les modifications apportées à votre formulaire ou rapport.
La prochaine fois que vous ouvrirez le formulaire ou l’état, puis cliquez avec le bouton droit sur le formulaire, l’état ou le contrôle, vous verrez votre menu contextuel avec les commandes associées, comme illustré dans l’illustration suivante :
Ajouter le menu en tant que menu contextuel global
Cette procédure remplace tous les menus contextuels par défaut dans la base de données active. Les menus contextuels personnalisés que vous avez attachés à des formulaires, des rapports ou des contrôles spécifiques ne sont pas affectés.
-
Cliquez sur Fichier > Options.
-
Dans la boîte de dialogue Options Access, cliquez sur Base de données active.
-
Sous Options du ruban et de la barre d’outils, dans la zone Barre de menus contextuels , tapez le nom de la macro que vous avez créée à l’étape 2 (dans cet exemple, « mcrAddShortcutMenu »).
-
Cliquez sur OK pour enregistrer vos modifications dans la boîte de dialogue Options d’accès .
-
Fermez, puis rouvrez votre base de données pour que les modifications prennent effet.
Les menus contextuels personnalisés remplacent les menus contextuels par défaut pour les objets auxquels ils sont attachés. Si vous souhaitez conserver certaines commandes Access à utiliser dans ces menus, utilisez l’action de macro ExécuterCommande pour placer les commandes dans les objets macro des menus souhaités.
Un menu contextuel personnalisé attaché à un contrôle remplace tous les autres menus contextuels personnalisés définis dans la base de données. Un menu contextuel personnalisé attaché à un formulaire ou à un état remplace un menu contextuel global personnalisé.
Lorsque vous spécifiez une macro de menu pour un formulaire ou un état ou pour la base de données, Access exécute cette macro de menu chaque fois que le formulaire, l’état ou la base de données est ouvert. Si vous apportez des modifications à l’objet macro de menu ou à l’objet macro qui définit ses commandes pendant que le formulaire, l’état ou la base de données est ouvert, vous devez fermer le formulaire, l’état ou la base de données et le rouvrir pour voir les modifications.
Pour créer un sous-menu dans une liste de commandes de menu contextuel, suivez l’étape 1 pour créer un objet macro distinct qui contient uniquement les commandes de sous-menu, comme illustré dans l’illustration suivante :
Ensuite, suivez à nouveau l’étape 1 pour définir les commandes de l’objet de menu de niveau supérieur. Ajoutez le sous-menu en tant qu’élément dans l’objet macro de niveau supérieur à l’aide de l’action de macro AjouterMenu . L’illustration suivante montre l’objet macro d’un menu qui contient un sous-menu. La troisième sous-zone de cet exemple d’objet macro crée le sous-menu Exporter vers... (mcrShortcutSubMenuCommands).
L’illustration suivante montre le menu contextuel terminé obtenu avec un sous-menu :
Vous pouvez créer plusieurs niveaux de sous-menus à l’aide des actions de macro AddMenu dans les objets macro pour chaque niveau de menu. Veillez à fournir une valeur pour l’argument Nom du menu pour chaque action AjouterMenu , sinon le sous-menu s’affiche sous la forme d’une ligne vide dans le menu de niveau supérieur.
Les conditions d’expression de macro utilisant des blocs If/Then/Else sont uniquement prises en charge dans l’objet macro de menu de niveau supérieur. En d’autres termes, vous pouvez utiliser une expression de condition dans un objet macro de menu pour déterminer si un menu ou menu contextuel particulier sera affiché, mais uniquement pour les menus du niveau supérieur. Vous ne pouvez pas utiliser d’expressions de condition pour afficher ou masquer des commandes ou des sous-menus dans les menus. Vous pouvez également utiliser une expression de condition pour masquer ou afficher un menu contextuel personnalisé ou un menu contextuel global.
Si vous le souhaitez, la macro de menu que vous créez à l’étape 2 peut faire partie d’un objet macro. Par exemple, si vous avez plusieurs menus contextuels pour différents objets ou contrôles, vous pouvez créer un seul objet macro qui contient toutes les macros de menu nécessaires. Veillez à avoir un nom unique pour chaque sous-macro. À l’étape 3, utilisez la notation suivante pour faire référence à la macro : MacroObjectName.SubmacroName. Par exemple, mcrAddShortcutMenus.AddMenu2.