Scénario: Votre fichier d'aide compilé affiche correctement les Sujets et le panneau de Contenu, mais les Onglets "Index" et "Chercher" se sont mélangés avec ceux du système d'aide MS-Access !
L'information ci-dessous est extraite de la base de connaissance Microsoft, article Q271390 :
Symptômes
Dans une forme Microsoft Access associée à un fichier d'aide spécicique de type "Compressed HTML Help" (.chm), vous remarquez que, bien que le fichier d'aide affiche le Sujet approprié, celui-ci est affiché dans une fenètre d'aide Access avec les valeurs de l'Index Access par défaut, l'assistant de réponse Access et le titre Access.
Ce comportement se produit même si vous aviez bien spécifié des Titres et Index spécifiques dans le fichier d'aide .hhp. Cependant si vous double-cliquez le fichier d'aide .CHM depuis Windows, celui-ci apparaît dans sa propre fenètre, sans problème.
NOTE: Ce comportement ne se produit pas avec des fichiers non HTML (.hlp par exemple).
Résolution
Vous pouvez écrire du code VBA - Visual Basic pour Applications - afin de lancer le fichier CHM dans sa propre fenètre, comme nous le démontrons ci-après.
NOTE: Cet exemple ne montre le fichier d'aide dans sa propre fenètre que si vous l'appelez par la touche F1. Voyez l'article suivant dans la Base de Connaissances Microsoft Q242433 MOD2000 :
"How to Create Context Sensitive HTML Help Files" puis suivez les instructions dans cet article pour créer le fichier d'aide exemple et sa base de données.
Dans la même base de données où vous avez créé la forme, cliquez sur "Modules" dans la fenètre de la Base de Données, puis "Nouveau". Saisissez ou collez le code ci-dessous dans le nouveau module :
Option Compare Database
Option Explicit
Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As Long, ByVal dwData As Long) As Long
Const HH_DISPLAY_TOPIC = &H0
Const HH_SET_WIN_TYPE = &H4
Const HH_GET_WIN_TYPE = &H5
Const HH_GET_WIN_HANDLE = &H6
Const HH_DISPLAY_TEXT_POPUP = &HE
Const HH_HELP_CONTEXT = &HF
Const HH_TP_HELP_CONTEXTMENU = &H10
Const HH_TP_HELP_WM_HELP = &H11
Public Sub Show_Help(HelpFileName As String, MycontextID As Long)
'A specific topic identified by the variable context-ID is started in
'response to this button click.
Dim hwndHelp As Long
'The return value is the window handle of the created Help window.
Select Case MycontextID
Case Is = 0
hwndHelp = HtmlHelp(Application.hWndAccessApp,HelpFileName, _
HH_DISPLAY_TOPIC, MycontextID)
Case Else
hwndHelp = HtmlHelp(Application.hWndAccessApp,HelpFileName, _
HH_HELP_CONTEXT, MycontextID)
End Select
End Sub
Public Function HelpEntry()
'Identify the name of the Help file and a possible context-id.
Dim FormHelpId As Long
Dim FormHelpFile As String
Dim curForm As Form
'Set the curForm variable to the currently active form.
Set curForm = Screen.ActiveForm
'As a default, specify a generic Help file and context-id. Note
that
'the location of your file may be different.
FormHelpFile = "C:\MyProject.chm"
FormHelpId = 1001
'Check the Help file property of the form. If a Help file exists,
'assign the name and context-id to the respective variables.
If curForm.HelpFile <> "" Then
FormHelpFile = curForm.HelpFile
End If
'If the Help context-id of the control is not null and greater than
'zero, assign the value to the variable.
If Not IsNull(curForm.ActiveControl.Properties("HelpcontextId")) Then
If curForm.ActiveControl.Properties("HelpcontextId") > 0 Then
FormHelpId = curForm.ActiveControl.Properties("HelpcontextId")
End If
End If
'Call the function to start the Help file, passing it the name of the
'Help file and context-id.
Show_Help FormHelpFile, FormHelpId
End Function
Enregistrez le module et refermez l'éditeur Visual Basic. Dans la fenètre de la Base de Données cliquez sur "Macros", "Nouveau". Enregistrez la Macro sous le Nom "AutoKeys". Depuis le menu "Voir" cliquez "Nom des Macros". Entrez le texte suivant dans la première ligne sous "Macro Name" : {F1}.
Paramétrez l'action pour {F1} sur "RunCode". Pour l'argument du nom de fonction entrez :
"=HelpEntry()"
Enregistrez et refermez la macro.
Ouvrez la forme form1 en mode "vue forme".
Cliquez dans le second champ et appuyez sur F1.
Vérifiez que le fichier d'aide s'affiche correctement dans sa propre fenètre.
Statut
Microsoft a confirmé qu'il s'agit bien d'un problème avec les produits Microsoft listés au début de cet article.