Bonjour,
J’ai lu avec la plus grande attention le tuto « Personnaliser vos barres de commandes dans Access » par Starec.
Il m’a parfaitement guidé pour créer mes menus contextuels dans Access 2007.
J’ai maintenant un menu contextuel pour chaque contrôle dans chacun de mes formulaires ; j’ai « variabilisé » leur construction car dans une BDD on peut avoir rapidement des dizaines de formulaires et sous-formulaires, des centaines de contrôles.
Tout va bien, MAIS :
Le dernier bouton de mon menu contextuel affiche " Aide " (avec le A souligné) et un joli point d'interrogation (blanc dans un rond bleu Access 2007) devant.
Quand le menu est déroulé, si je clique sur ce bouton "Aide" avec la souris ou si je tape un A au clavier, tout va bien, mon fichier Aide (.chm) s'ouvre à la bonne rubrique.
Il n'en va pas de même lorsque j'actionne la touche de fonction F1, or le réflexe naturel de l'utilisateur, quand il voit " Aide ", est d'activer cette touche F1 (en tout cas c'est ma pratique si je n'ai pas la main sur la souris ou le note pad).
Lorsque cette touche est activée et que le menu contextuel est déroulé, l'aide générique Access s'ouvre à la page d'accueil : le résultat est que l'utilisateur est plus perturbé qu'aidé ! et puis c'est pas cool...
Comment faire pour qu'à la pression de la touche F1 quand le menu contextuel est déroulé :
- Au pire l'aide Access ne s'affiche pas,
- Au mieux mon fichier Aide-.chm s'ouvre sur la bonne rubrique comme si j'avais pressé le " A " ?
QUELQUES PRECISIONS :
Dans ma BDD la propriété de chaque formulaire, sous l'onglet Autres, est renseignée parfaitement avec le nom du fichier .chm (précédé de son chemin complet), la propriété contexte d'aide comporte bien le n° d'ID adéquat. Il en va de même pour chaque contrôle de chaque formulaire. La touche F1 fonctionne alors parfaitement (si le menu contextuel n'est pas apparent - càd sans click droit préalable).
Mon problème se situe à un moment où la séquence de la touche F1 qui est produite n'est plus (à mon avis) sous le contrôle du formulaire mais sous le contrôle du menu contextuel.
Voici comment ça se passe :
Clic droit sur un contrôle : mon menu contextuel se déroule proposant diverses actions de déplacement dans le recordset entre autres, et enfin, un bouton qui propose de créer un nouvel enregistrement et développe un sous menu qui lui même propose 3 boutons :
- le premier permet de saisir un nouvel enregistrement à partir d'un autre existant (ouverture d'un formulaire listant tous les enregistrements, critères de sélection choix du "meilleur" enregistrement source puis correction de l’enregistrement destination... tout ça marche parfaitement.
- le deuxième bouton, lui, propose une création ex nihilo : un simple DoCmd.GoToRecord , , acNewRec.
Comme mon fichier d'aide explique la meilleure façon d'entrer un nouvel enregistrement (par copie d'un autre ou en partant de rien selon les cas), il m'a semblé judicieux de rajouter un troisième bouton à ce sous-menu :
- le troisième bouton présente la jolie icône point d'interrogation bleue et le mot Aide avec le A souligné. En frappant le A, en cliquant ce bouton, le résultat est parfait : le fichier .chm s'ouvre à l'endroit voulu par MonInteger = HtmlHelp(Application.hWndAccessApp, "MonLecteur:\"MonChemin"\"MonFichier.chm", H_HELP_CONTEXT, MonID)
LE PROBLEME EST LA : si je frappe F1 (touche de fonction) ALORS QUE LE MENU EST DEROULE l'aide générique Access est activée ; je n'arrive pas à capturer cette séquence et donc suis sans moyens.
J'ai suivi une piste du genre " If GetKeyState(VK_F1)... " mais il faudrait pouvoir la placer sous le contrôle du menu contextuel ; donc je tourne en rond... et puis ce n’est peut-être pas la bonne voie à suivre.
J’ai tenté la Macro AutoKeys mais, non seulement elle prive mes utilisateurs de l’accès direct au fichier d’aide par la touche F1, mais encore, cette macro n’inhibe en rien la touche F1 lorsque le menu contextuel est déroulé ; donc aucun intérêt du côté de AutoKeys.
Merci pour votre patience, je sais c'est long, mais en même temps c'est p'têt plus explicite.
Auriez vous un début de solution à me soumettre ?
Partager