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

Excel Discussion :

utilisation d'une fonction via une DLL


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Points : 27
    Points
    27
    Par défaut utilisation d'une fonction via une DLL
    Bonjour,

    Après plusieurs recherches, notamment sur ce forum, je bloque toujours sur le problème que je vous soumets, en espérant ne pas faire doublon avec une autre discussion qui m'aurait échappée...

    J'ai codé une fonction codée en C/C++ qui prend deux nombres en paramètres et renvoie un nombre, et il faudrait que cette fonction soit exploitable sous excel : l'utilisateur entre par exemple les valeurs des paramètres dans deux cellules et le résultat calculé par la fonction est alors affiché dans une troisième cellule.
    J'ai cru comprendre avec mes premières recherches qu'il fallait passer par la création d'une DLL contenant ma fonction (ce que j'ai fait avec Visual Studio), mais c'est maintenant dans l'exploitation de cette DLL que j'échoue.

    Étant un grand novice dans l'utilisation d'excel, je me retrouve face à un obstacle de taille. Je me suis penché sur des tutos et des FAQ, mais je n'ai pas vraiment le temps de me former à excel pour l'instant, le but étant juste de permettre à des personnes qui n'utilisent qu'excel de pouvoir utiliser ma fonction.

    Pourriez-vous m'aider en m'indiquant la marche à suivre ou en m'orientant vers une documentation relative à cela ?

    Merci d'avance à tous.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    J'ai un peu avancé sur le sujet mais j'ai besoin d'un coup de pouce.
    J'ai essayé de créer une macro destinée à utiliser la fameuse DLL, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 28/05/2012 par T0134406
    '
    Private Declare Function MyFunc Lib "MyFuncDLL.dll" (ByVal y As Double) As Double
     
    Public Function MyFuncVBA(x As Double, y As Double) As Double
    MyFuncVBA = MyFunc(x, y)
    End Function
     
    Dim Param1 As Double, Param2 As Double, Result As Double
     
    Param1 = Range("A2").Value
    Param2 = Range("A3").Value
     
    Result = MyFuncVBA(Param1, Param2)
     
    Range("B2").Value = Result
     
    '
    End Sub
    Comme vous pouvez vous en douter si j'en parle ici, ça ne fonctionne pas (apparemment, c'est l'inclusion de la fonction qui doit poser probleme car le message d'erreur de compilation est "seuls des commentaires peuvent apparaitre après End Sub, End Function ou End Property"). Comme c'est la première fois que je fais ça et que j'ai programmé cette macro en glanant ce que je pouvais sur différents documents d'initiation, je me retrouve un peu bloqué.
    J'aurais bien besoin de vos conseils pour terminer et savoir comment faire fonctionner tout ça...

    Merci d'avance à tous ceux (et celles) qui pourront y jeter un oeil.

    PS: dois-je déplacer cette discussion dans la partie dédiée particulièrement aux macros et à VBA ?

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir par exemple ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
     
    Private Declare Function MyFunc Lib "MyFuncDLL.dll" (ByVal y As Double) As Double
     
    Public Function MyFuncVBA(x As Double, y As Double) As Double
        MyFuncVBA = MyFunc(x, y)
    End Function
     
    Sub tst()
    Dim Param1 As Double, Param2 As Double, Result As Double
        Param1 = Range("A2").Value
        Param2 = Range("A3").Value
        Result = MyFuncVBA(Param1, Param2)
        Range("B2").Value = Result
    End Sub

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Merci pour ces corrections ! Je n'avais en effet pas du tout compris comment cela se structurait.


    J'ai maintenant deux autres questions :

    1. Où dois-je placer le fichier MyFuncDLL.dll pour qu'Excel le trouve?
    2. Comment faire pour que la macro soit toujours active sans avoir besoin de lancer son exécution manuellement (et ainsi que le resultat change automatiquement lorsqu'on modifie les valeurs des paramètres) ?

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. [GTK+] Modifier une liste via une fonction callback
    Par odsen.s dans le forum GTK+ avec C & C++
    Réponses: 12
    Dernier message: 03/05/2007, 17h33
  3. Réponses: 2
    Dernier message: 17/04/2007, 17h14
  4. Réponses: 3
    Dernier message: 29/04/2006, 13h02
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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