Créer une Function

Eljojo_e

XLDnaute Nouveau
Bonjour,

J'ai créé pas mal de function différente, mais maintenant j'aimerai insérer un "commentaire" dedans, explication :

Quand on tape la formule dans une cellule j'aimerai qu'apparaisse en "commentaire" les explication de comment la remplir.

J'espère que vous arriver à me suivre,

cordialement,
 

Misange

XLDnaute Barbatruc
Re : Créer une Function

Bonjour

C'était très bien expliqué sur le site de Laurent Longre, site qui est hélas en rade depuis un bon moment. Laurent m'a autorisé il y a déjà un bon moment à mettre une copie de son site sur Excelabo mais je n'ai toujours pas eu le temps de m'en occuper...
Mais de toutes façons ses explications étaient pour une version antérieure à 2003. Sur 2007 et +, je ne pense pas que la méthode reste valable.
Voici (sans les images...) le texte de Laurent :
Le fichier d'aide décrit ici est celui qui accompagne la macro complémentaire etiquettes.xla, macro qui permet d'ajouter des étiquettes sur les points d'un graphe.
Le fichier d'aide

Il existe deux formats de fichier d'aide :
- Le format HLP est l'ancien format utilisé sous Windows 3 et Windows 95. Il est basé sur des pages d'aide au format RTF. Il présente encore quelques avantages, en particulier son chargement très rapide, mais il n'évolue plus depuis quelques années et offre un éventail de possibilités plutôt réduit.
- Le format CHM est utilisé universellement depuis Windows 98 et repose sur des pages d'aide écrites en HTML. C'est le format retenu ici.
Il existe beaucoup de compilateurs d'aide au format CHM. Celui que j'utilise est HTML Help Workshop, téléchargeable gratuitement sur le site Microsoft.
Voici les grandes lignes de ce qu'il faut savoir pour créer un nouveau fichier d'aide avec HTML Help Workshop ("HHW") et pour l'utiliser à partir de notre application. Pour plus de détails, voir la documentation fournie.
Tous les fichiers utilisés pour fabriquer l'aide de la macro Etiquettes sont dans le dossier "Fichier d'aide".
Création des pages HTML et du fichier projet

Avant de créer le fichier d'aide proprement dit, il faut créer les rubriques d'aide. Ce sont simplement des pages HTML classiques, que vous pouvez composer avec n'importe quel éditeur approprié. La seule précaution à prendre est de bien insérer un titre sur chaque page (balise <TITLE>). Ces titres seront utilisés par HHW pour identifier les pages, et éventuellement pour l'index de l'aide.
Le fichier d'aide de la macro Etiquettes contient trois pages HTML : Sommaire.htm, Etiquettes.htm et Repère.htm, que vous pouvez éditer avec Frontpage, par exemple.
HHW rassemble toutes les informations nécessaires pour créer le fichier d'aide dans un fichier projet, d'extension HHP (pour notre macro c'est le fichier Etiquettes.hhp). Pour créer le fichier projet, à partir de HHW :

  • Aller dans le menu File => New
  • Sélectionner Project cliquer sur Suivant
  • Donner l'emplacement et le nom du fichier projet
  • Indiquer les types de fichiers déjà existants à inclure (ne cocher ici que HTML Files)
  • Cliquer sur Suivant, et ensuite sur Add pour ajouter les pages d'aide HTML déjà créées
  • Cliquer sur Terminer
La fenêtre principale de HHW se présente ainsi :
Etiquettes3-1.gif

L'onglet Project contient toutes les informations sur le contenu du fichier d'aide et sur son apparence (type de fenêtre, boutons etc.) L'onglet Contents permet de construire le sommaire (fichier d'extension HHC) et l'onglet Index de créer un index (fichier HHK). Le projet d'aide de la macro Etiquettes contient un sommaire (fichier Etiquettes.hhc) mais pas de fichier d'index.
Le fichier projet est en fait un simple fichier texte constitué de différentes sections, un peu comme un fichier INI, dont le contenu est affiché à gauche.
La barre d'outils à gauche de l'onglet Project permet de modifier le contenu du projet :

Modifier les options du projet

Ajouter ou supprimer des pages d'aide

Modifier l'aspect de la fenêtre
Créer des identificateurs pour lier les pages d'aide à l'application

Voir la source du fichier HTML sélectionné

Sauvegarder le projet

Sauvegarder et compiler le projet
Une fois toutes les pages d'aide HTML ajoutées au projet, il suffit de définir la page s'affichant par défaut (cliquer sur et sélectionner la page dans la liste déroulante Default de l'onglet Files) et de compiler le projet pour obtenir déjà un fichier d'aide CHM opérationnel.
Création du sommaire

Pour fabriquer un sommaire, allez dans l'onglet Contents. Vous pouvez ajouter des chapitres ("headings") par l'icône ou des pages par l'icône . Pour modifier après-coup un chapitre ou une page, cliquer sur et sur pour le supprimer.
Les icônes présentant des flèches permettent de déplacer les chapitres ou les pages (par exemple décaler une page vers le début du sommaire, ou extraire une page d'un chapitre etc.)
Quand on clique sur l'icône d'ajout de page, la boîte de dialogue suivante est affichée :


  • Saisir le titre dans la zone Entry title
  • Cliquer sur Add..., sélectionner la page HTML liée à ce sujet et valider.
La liste des pages ne contient pas les noms des fichiers HTML, mais leurs titres, correspondant aux balises <TITLE>. D'où l'importance de bien choisir le texte affiché dans ces balises.
La sélection d'une page n'est pas nécessaire pour les chapitres, mais il vaut mieux en prévoir une.
Liaison entre le fichier d'aide et l'application

Pour que la macro puisse afficher une page du fichier d'aide, par exemple par clic sur un bouton "Aide" ou par appui sur la touche F1, deux nouvelles manipulation est nécessaire : il faut associer les fichiers HTML à des alias et créer une liste d'identificateurs de contexte ("Context ID").
1) Création des alias
Il faut tout d'abord créer des alias pour les différentes pages HTML contenues par le fichier d'aide. Un alias est une simple chaîne de caractères identifiant un fichier HTML. Cliquer sur l'icône et activer l'onglet Alias. La boîte de dialogue suivante s'affiche :

Cliquer sur Add, Edit ou Remove pour respectivement ajouter, modifier ou supprimer un alias.
Les alias se présentent toujours sous la forme : Alias=Nom_fichier.htm. Pour plus de clarté, on préfixe souvent les alias par "IDH_" mais ça n'a rien d'obligatoire. Quand vous cliquez sur Add, tapez le nom de l'alias dans la zone de texte et sélectionnez le fichier correspondant dans la liste déroulante.
2) Création des identificateurs de contexte
Les identificateurs de contexte sont de simples nombres associés aux différentes pages d'aide, et plus précisément à leurs alias. Ce sont ces nombres qui vont être utilisés par VBA pour afficher une page particulière du fichier d'aide.
On peut définir ces nombres directement dans la section [MAP] du fichier projet, ou les définir dans un fichier texte d'extension .h (voir le fichier Etiquettes.h). Le contenu de ce fichier texte doit se présenter sous cette forme :
#define Alias1 Identificateur1
#define Alias2 Identificateur2
etc.
Le fichier d'aide de la macro Etiquettes contient trois pages HTML, Sommaire.htm, Etiquettes.htm et Repère.htm, dont j'ai défini les alias ainsi :
IDH_Sommaire=Sommaire.htm
IDH_Etiquettes=Etiquettes.htm
IDH_Repère=Repère.htm
J'ai décidé d'associer ces pages d'aide respectivement aux identificateurs 100, 200 et 300 (ce choix est totalement arbitraire). Le fichier Etiquettes.h contient donc :
#define IDH_Sommaire 100
#define IDH_Etiquettes 200
#define IDH_Repère 300
Pour inclure le fichier Etiquettes.h dans le projet :

  • Cliquer sur l'icône de l'onglet Project
  • Dans l'onglet Map, cliquer sur Header file...
  • Sélectionner le fichier .h et valider
  • Recompiler le projet
Appeler une page d'aide à partir de VBA

La boîte de dialogues usfEtiquettes contient un bouton "Aide" destiné à afficher la page Etiquettes.htm du fichier d'aide. Sous VBA, une page d'aide s'affiche par la méthode Application.Help, dont la syntaxe est :

Application.Help HelpFile, HelpContextID L'argument HelpContextID représente l'identificateur contextuel de la page à afficher. Comme nous avons choisi l'identificateur 200 (voir paragraphe précédent), notre page d'aide sera affichée par cette simple instruction :

Private Sub ShowHelp() Application.Help ThisWorkbook.Path & "\Etiquettes.chm", 200 End Sub Private Sub btnAide_Click() ShowHelp End Sub Réagir à la touche F1

Le UserForm usfEtiquettes est fait de telle sorte que le contrôle RefEdit1 conserve toujours le focus tant que la boîte de dialogue n'est pas fermée. Pour que l'application affiche la page d'aide quand l'utilisateur appuie sur F1, on peut donc utiliser sa procédure événementielle KeyDown et comparer la touche activée au code de la touche F1 (112) :

Private Sub RefEdit1_KeyDown(KeyCode As Integer, ByVal Shift As Integer) If KeyCode = 112 Then ShowHelp End Sub Dans des UserForm plus complexes comportant davantage de contrôles, il faudra compléter de la même manière toutes les procédures KeyDown de ces contrôles.
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Créer une Function

Oui la méthode est assez compliquée ! mais je crains justement qu'il n'y en ait pas d'autres et je crains aussi que celle écrite par Laurent ne fonctionne pas sur excel 2007 et +.

On peut assez facilement mettre une description générale de la fonction mais je n'ai rien vu qui permette de documenter chacun des arguments lors de la saisie comme c'est le cas pour les fonctions natives d'excel.

Une solution dans ce cas c'est de créer un formulaire mais c'est autrement plus lourd et pas toujours adapté.
 

Misange

XLDnaute Barbatruc
Re : Créer une Function

Hello Patrick (et Bruno !)

Super ! je mets ça soigneusement de côté :) Merci de l'avoir trouvé .
juste un bémol :
"If the file is opened in Excel 2007, the argument descriptions are not displayed. If you save the workbook as an XLS file, the Compatibility Checker kicks in and tells you that the function descriptions will be removed."

en complément : pour mettre la fonction dans une catégorie particulère :
Excel: Adding Description to Custom Excel Functions
 

Misange

XLDnaute Barbatruc
Re : Créer une Function

C'est décrit dans le lien que je t'ai indiqué :


  1. Go to Tools>Macro>Record new macro.
  2. In the Description box, type a description for your UDF. Type the name of your UDF and click Ok.
  3. Now Stop recording.
  4. Open the VBE (Alt+F11) and replace the word "Sub" with "Function"
  5. Add your Function arguments as normal.
Traduction :
onglet développeur/enregistrer macro
dans la boite de description, tape une description pour ta fonction, rentre le nom de ta fonction personnalisée et OK
Arrête l'enregistreur de macros
Ouvre l'éditeur VBE
remplace le mot sub par function
recopie le texte de ta fonction à la place de celui de la macro (qui ne contient quasi rien).

 

Discussions similaires

Statistiques des forums

Discussions
312 270
Messages
2 086 678
Membres
103 370
dernier inscrit
pasval