[VBA-E] Ajouter des fonctions dans Excel
Salut,
j'aimerais savoir comment il faut s'y prendre pour ajouter des fonctions (qui appelent du code VB) personnalisées dans Excel (donc accessibles par 'Insertion' -> 'Fonctions...'), j'aimerais également pouvoir définir ma propre catégorie de fonction...
Voilà, j'espère que qlq'un saura m'aider....
Merci
Re: (VBA/Excel) Ajouter des fonctions dans Excel
Citation:
j'aimerais savoir comment il faut s'y prendre pour ajouter des fonctions (qui appelent du code VB) personnalisées dans Excel (donc accessibles par 'Insertion' -> 'Fonctions...')
Du code VB, ou VBA ?
Si c'est VBA, un exemple : dans un nouveau classeur, insère un module standard avec ce code :
Code:
1 2 3
| Function HYPOTENUSE(Longueur1 As Double, Longueur2 As Double) As Double
HYPOTENUSE = Sqr(Longueur1 ^ 2 + Longueur2 ^ 2)
End Function |
Dans une feuille de calcul du classeur, tu peux mettre la formule =HYPOTENUSE(A4;A5)
Si tu veux rendre ta fonction disponible en permanence, quel que soit le classeur ouvert :
- Soit tu places ce module dans le classeur Perso.xls
- Soit tu crées une macro complémentaire :
1) Tu enregistres le classeur contenant le module comme macro complémentaire XLA (Fichier -> Enregistrer sous -> Type de fichier = "Macro complémentaire Microsoft Excel (*.xla)"
2) Tu fermes le classeur
3) Tu vas dans le menu Outils -> Macros complémentaires et tu coches le nom du classeur XLA. S'il n'apparaît pas dans la liste, clique sur "Parcourir".
Ta fonction apparaîtra dans la catégorie "Personnalisées" de l'assistant fonction.
Si tu veux ajouter des fonctions VB (placées dans une DLL), tu peux faire pareil en appelant les fonctions de la DLL par l'intermédiaire de fonctions VBA (des "wrappers"). Le projet VBA devra comporter une référence à cette DLL. On ne peut pas utiliser des fonctions VB compilées directement à partir de cellules.
Citation:
j'aimerais également pouvoir définir ma propre catégorie de fonction...
Il y a plusieurs méthodes, dont aucune n'est vraiment simple :
- La solution officielle de Microsoft, qui n'est pas solide du tout (les nouvelles catégories risquent de se mélanger dans certaines circonstances) : http://support.microsoft.com/?kbid=137526
- Une méthode plus sûre mais moins directe qui demande d'ajouter un peu de code dans la procédure Auto_Open : http://longre.free.fr/english/func_cats.htm
- Une méthode reposant sur une DLL dédiée. Celle-ci permet en outre de commenter les arguments dans l'assistant fonction : http://longre.free.fr/english/#FunCustomize
Bonne chance. :-)