Cette question a été a demandé antes de mais à chaque fois, la réponse acceptée est simplement une résignation à fournir des descriptions de fonction en utilisant Application.MacroOptions
( VBA6 ) ( VBA7 ), mais cette information n'apparaît pas réellement sous forme d'infobulle, ce qui ne résout pas mon problème.
L'objectif
Ce que nous souhaitons tous, c'est de pouvoir définir des fonctions personnalisées par n'importe quel moyen (VBA, VSTO ou complément COM) et de donner à l'utilisateur l'avantage d'une description de la fonction et de ses paramètres sous forme de pop-up/tool-tip, comme cela apparaît pour chaque fonction Excel intégrée, soit en ligne, soit dans la barre de formule :
La réponse largement acceptée à ce besoin est que ce n'est pas possible pour les fonctions personnalisées, mais je souhaite remettre en question cette croyance.
Le problème
Actuellement, la meilleure chose que j'ai vue faire est de définir des fonctions (souvent en utilisant l'appel MacroOptions ci-dessus) de sorte que lorsque l'on fait apparaître le dialogue de fonction (le bouton fx dans la barre de formule), leur fonction et la description des paramètres apparaissent comme ci-dessous :
Comme vous pouvez le constater, il s'agit d'une fonction complexe comportant de nombreux paramètres. Si l'utilisateur n'est pas au courant de l'existence de cette boîte de dialogue "arguments de la fonction" et de la manière de la faire apparaître, et qu'il ne connaît que l'infobulle standard d'Excel, il ne verra que le nom de la formule et aucune aide supplémentaire :
Avec lesquels ils n'ont aucune chance de fournir correctement les paramètres requis. (Sans lire la documentation, ce que, bien sûr, aucun utilisateur ne fait jamais).
Maintenant, un utilisateur expérimenté pourrait savoir qu'en tapant Ctrl + Shift + A ils obtiendront une liste auto-complétée de paramètres de fonction comme suit :
Mais bien sûr, nous avons le même problème que ci-dessus, à savoir que les utilisateurs standard d'Excel seront uniquement habitués au comportement par défaut de la première image et n'auront probablement jamais appris cette fonctionnalité.
Il devrait être clair à ce stade que cela ne suffit pas et que nous voulons ce que chaque fonction intégrée possède - l'info-bulle en ligne qui indique à l'utilisateur comment utiliser la fonction.
L'allumeuse
Au début, j'aurais pu être convaincu que cela n'est tout simplement pas possible, sauf avec les fonctions natives de l'application Excel. Les compléments et le VBA sont des fonctions extensibles, et cette info-bulle n'est peut-être tout simplement pas extensible. Mais cette théorie est remise en question par l'existence du module complémentaire Analysis Toolpak. Bien sûr, il est construit dans Microsoft, mais ANALYS32.xll est un complément XLL autonome comme ceux qui peuvent être produits en VB, C, C++ et C#. Bien sûr, lorsque ce XLL est chargé dans l'application, la fonction fonctions qu'il met à disposition ont les mêmes info-bulles que les fonctions natives d'Excel :
Si ces informations sont en quelque sorte encodées dans ce fichier XLL et transmises à Excel, il existe certainement un moyen de les reproduire avec nos propres modules complémentaires ? J'en suis maintenant au point où je vais commencer à apprendre un peu la décompilation et voir si je peux faire de la rétro-ingénierie sur ce qui se passe dans le toolpak d'analyse.
Comment vous pouvez aider
Je suis presque certain d'avoir recherché toutes les informations publiques disponibles sur ce problème. Si quelqu'un sait quelque chose que je ne sais pas et qui pourrait m'aider, n'hésitez pas à m'en faire part. Je suis très peu familier avec la rétro-ingénierie des dlls / xlls compilées, donc si quelqu'un a envie d'ouvrir sa copie locale de Analysis32.xll et de comprendre ce qui se passe avec les définitions de fonctions personnalisées, je lui en serais très reconnaissant. Sinon, je vais continuer à creuser moi-même jusqu'à ce que j'aie trouvé toutes les impasses et rapporter ce que j'ai trouvé.