Cette question a été posée avant , mais à chaque fois la réponse acceptée est simplement une démission de fournir des descriptions de fonction à l' aide Application.MacroOptions
( VBA6 ) ( VBA7 ), mais cette information ne semble pas vraiment comme une info - bulle, il ne résout pas mon problème.
Le but
Ce que nous souhaitons tous, c'est pouvoir définir des fonctions personnalisées par tous les moyens (complément VBA, VSTO ou COM) et faire bénéficier l'utilisateur d'une description contextuelle / info-bulle de la fonction et de ses paramètres, comme apparaît pour chaque fonction Excel intégrée, en ligne ou dans la barre de formule:
La réponse largement acceptée à ce besoin est qu'il n'est pas possible pour les fonctions personnalisées, mais je souhaite contester cette croyance.
Le problème
Actuellement, le mieux que j'ai vu quelqu'un faire est de définir des fonctions (souvent en utilisant l'appel MacroOptions ci-dessus) de sorte que lorsque vous ouvrez la boîte de dialogue de fonction (le bouton fx dans la barre de formule), leurs descriptions de fonctions et de paramètres apparaissent comme ci-dessous:
Comme vous pouvez le voir, c'est une fonction compliquée avec de nombreux paramètres. Si l'utilisateur n'est pas au courant de cette boîte de dialogue «arguments de fonction» et de la façon de le faire apparaître, et n'est plutôt familier qu'avec l'info-bulle standard d'Excel, il ne verra que le nom de la formule et aucune aide supplémentaire:
Avec lequel 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é peut savoir qu'en tapant Ctrl+ Shift+ A, il se verra attribuer une liste auto-complétée de paramètres de fonction comme ceci:
Mais bien sûr, nous avons le même problème que ci-dessus, à savoir que les utilisateurs Excel standard ne seront habitués qu'au comportement par défaut de la première image et n'auront probablement jamais appris cette fonctionnalité.
Il devrait être clair à ce stade pourquoi cela ne suffit pas et nous voulons ce que chaque fonction intégrée a - l'info-bulle en ligne qui indique à l'utilisateur comment utiliser la fonction.
Le taquin
Au début, j'aurais peut-être été convaincu que ce n'est tout simplement pas possible sauf avec les fonctions natives de l'application Excel. Les compléments et VBA sont des fonctionnalités d'extensibilité, et cette info-bulle peut simplement ne pas être extensible. Mais cette théorie est remise en question par l'existence du complément Analysis Toolpak. Bien sûr, il est intégré à Microsoft, mais ANALYS32.xll est un complément XLL autonome, tout comme ceux qui peuvent être produits en VB, C, C ++ et C #. Effectivement, lorsque ce XLL est chargé dans l'application, les fonctions qu'il rend disponibles ont les mêmes info-bulles que les fonctions Excel natives:
Si ces informations sont en quelque sorte encodées dans ce fichier XLL et transmises à Excel, il existe un moyen de les répliquer avec nos propres compléments? J'en suis maintenant au point où je vais commencer à m'apprendre un peu la décompilation et voir si je peux faire de l'ingénierie inverse tout ce qui se passe dans le toolpak d'analyse.
Comment vous pouvez aider
Je suis presque certain d'avoir recherché toutes les informations disponibles publiquement sur ce problème. Si quelqu'un sait quelque chose que je ne sais pas qui pourrait aider avec cela, n'hésitez pas à intervenir. Je ne suis pas familier avec le reverse-engineering de dll / xlls compilés, donc si quelqu'un a envie d'ouvrir sa copie locale de Analysis32.xll et comprendre ce qui se passe avec ses définitions de fonctions personnalisées, je serais très obligé. Sinon, je continuerai à creuser moi-même jusqu'à ce que j'aie atteint toutes les impasses et que je rapporte ce que je trouve.