IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Ajouter des fonctions dans Excel [Trucs & Astuces]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Points : 14
    Points
    14
    Par défaut [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

  2. #2
    Membre du Club

    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Points : 49
    Points
    49
    Par défaut Re: (VBA/Excel) Ajouter des fonctions dans Excel
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    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. :-)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Salut,

    j'ai opté pour la solution
    - 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
    mais j'ai une erreur à la ligne Application.MacroOption (erreur 1004)... j'ai vu que sur la page internet, il fait justement référence à ce problème qui est selon lui lié à l'ATP (il faudrait charger l'ATP après ma macro complémentaire ???)...
    Je ne vois pas comment résoudre ce problème...
    Si tu pouvais encore m'aider pour ce problème tu serais mon Dieu

    merci, a+

  4. #4
    Membre du Club

    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Points : 49
    Points
    49
    Par défaut
    Il y a un exemple tout fait sur le même site, tu peux le télécharger ici : http://longre.free.fr/downloads/Fonctions.zip

    Tu dézippes le fichier, ensuite sous Excel tu fais Outils -> Macros complémentaires -> Parcourir, tu vas chercher le fichier Fonctions.xla dézippé et tu valides. Si tu lances l'assistant fonctions, tu verras une nouvelle catégorie "Nouvelles fonctions", qui contient deux fonctions VBA. Il te suffira de modifier le code de cette macro complémentaire pour créer ta propre catégorie.

    Il me semble que la bizarrerie liée à l'utilitaire d'analyses (ATP) a été corrigée à partir d'Excel 2002.

    Bonne chance. :-)

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/02/2011, 19h30
  2. Réponses: 0
    Dernier message: 01/10/2008, 17h17
  3. [VBA-E] Générer des combinaisons dans Excel
    Par JSOREL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 07/03/2007, 17h23
  4. Fonctions VBA renvoyant des tableaux dans Excel
    Par phil_75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2006, 00h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo