Création et utilisation d'un menu contextuel personnalisé

Un menu contextuel est une simple barre de menu (ou barre d'outil, comme on veut...) qui n'apparaît que quand on le lui demande avec le bouton droit.

Chaque élément d'un menu contextuel personnalisé devra OBLIGATOIREMENT appeler une macro. Comme on voudra vraisemblablement utiliser VB à la place, il sera nécessaire, dans la macro, de demander la macro ExécuterCode, et comme paramètre le nom d'une FONCTION (pas d'une procédure) VB qui se trouvera dans les modules.

Marche à suivre :

1. Création de la barre de menu contextuelle (vide) :

- Affichage/Barre d'outils/Personnalisé

- Cliquer sur Nouvelle...

- Donner un nom. Dans cet exemple, appelons-là ListeCentre, car je destine ce menu contextuel à s'afficher lorsqu'on clique sur le bouton droit dans une liste placée au centre d'un formulaire. OK.

- Maintenant que ListeCentre existe, et que c'est une barre d'outils vide, on va la transformer en menu contextuel en cliquant sur Propriétés

- Choisir Type : FenIndépendante. C'est ce fait qui crée le menu contextuel proprement dit. Cliquer sur Fermer

- Cocher la case "Menus contextuels". ça a pour effet de montrer des différents menus contextuels par défaut, ainsi qu'à droite de la barre, "Personnalisé", qui contient les différents menus contextuels personnalisés. Dans notre exemple, seulement ListeCentre.

Cette dernière opération n'a servi qu'a montrer que le menu existe mais qu'il est vide. Avant de le garnir, nous allons devoir créer une macro qui appelle une fonction VB, et seulement enfin ajouter cette macro comme nouvel élément de menu de ListeCentre.

2. Création de la fonction personnalisée VB

- Aller dans Module/Nouveau

- Créer une fonction "MaFonction" :

Function MaFonction()

     MsgBox "Je suis appelé depuis le menu contextuel"

End Function

- Sauvegarder le module sous P_Divers

- Fermer

3. Création d'une macro qui appelle cette fonction

- Aller dans Macro/Nouvelle

- Demander la macro ExécuterCode

- Dans les paramètres en bas (Nom Fonction), cliquer sur les 3 petits points

- Le générateur apparaît. Cliquer 2 fois sur Fonctions

- Choisir Le nom de la base de données en cours

- Dans la partie centrale, sélectionner P_Divers

- Dans la partie de droite La fonction MaFonction, et OK

- Sauvegarder la macro sous M_ContexteListeCentre (M pour macro, Contexte pour menu contextuel, et ListeCentre parce qu'elle sera appelée depuis le bouton droit de ListeCentre d'un certain formulaire

- Fermer la macro

4. Attachement de la macro M_ContexteListeCentre au menu contextuel ListeCentre

- Affichage/Barres d'outils/Personnalisé

- Cocher la case "Menus contextuels"

- Onglet Commande : Dans la liste de gauche, choisir "Toutes les macros"

- Faire glisser M_ContexteListeCentre jusque sur le menu "Personnalisé", descendre sur "ListeCentre", et, toujours en laissant appuyé le bouton gauche de la souris, faire glisser la macro jusqu'à la droite de ListeCentre. La macro est en place

- Pour que ce soit un texte sympa à la place du nom de la macro, cliquer sur le bouton droit de ce nouveau menu ainsi placé, et cliquer dans la zone Nom. Ecrire ce qu'on veut. Exemple : affiche-moi un message

5. Activation du menu contextuel au bon moment

- Aller dans le formulaire dans lequel on veut le menu contextuel

- Cliquer sur l'élément sur lequel on pourra appuyer avec le bouton droit pour faire apparaître le menu contextuel (dans mon cas, ce sera sur une liste de choix au centre de mon écran)

- Dans les propriétés de cet élément, chercher la propriété "Barre de menu contextuel" (onglet "Autre")

- Choisir dans la liste déroulante "ListeCentre"

Et voilà. Si tout s'est bien passé, lorsque vous lancez le formulaire en mode saisie de données, et que vous cliquez sur l'élément sur lequel vous avez défini le menu contextuel, et que vous cliquez sur le bouton droit de la souris, un choix apparaît : (un seul choix) : "Affiche moi un message". En cliquant sur ce choix, vous devriez avoir à l'écran un message "Je suis appelé depuis le menu contextuel", qui est l'instruction placée dans MaFonction, du module P_Divers, elle-même appelée par la Macro M_ContexteListeCentre, définie dans le seul et unique menu de la barre de menu contextuel personnalisé "ListeCentre".