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 :

Récupérer un char 3 étoiles et un double 2 étoiles d'une DLL en VBA ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut Récupérer un char 3 étoiles et un double 2 étoiles d'une DLL en VBA ?
    Bonjour le forum,

    Tout d'abord, veuillez m'excuser par avance si mes 2 questions ci-dessous ont déjà été posées, mais je n'ai rien trouvé pour l'instant sur le forum...

    J'ai 2 questions urgentes :

    QUESTION 1 :
    J'ai une fonction en C qui me retourne en sortie un char *** (un pointe vers un tableau de chaîne de caractères ? - je précise que je suis nul en C...).
    Voici sa déclaration de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long RecupListe(char ***MaListe)
    Cette fonction me retourne donc une liste de chaîne de caractères.
    J'aimerais pouvoir l'inclure dans une DLL, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" __declspec(dllexport) long __stdcall RecupListe(char ***MaListe)
    Puis ensuite, l'appeler depuis VBA dans Excel pour afficher les éléments de cette liste dans la colonne que je veux.
    J'ai pour l'instant déclaré la fonction en VBA de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function RecupListe Lib "maDLL.dll" Alias "_RecupListe@8" (ByRef lptArray As Long) As Long
    où 'lptArray serait un pointeur vers la liste...
    Pouvez-vous me répondre en me donnant un exemple adapté aux déclarations que j'ai faites ci-dessus SVP ?
    Doit-on utiliser des SAFEARRAY, des instructions 'VarPtrStringArray', autre chose ?

    QUESTION 2 :
    Dans le même principe, j'ai une fonction C qui passe en arguments de sortie des double **, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" __declspec(dllexport) long __stdcall RecupValeurs(double **LeTemps, double **LaValeur)
    J'aimerais dans ce cas pouvoir appeler la fonction depuis Excel en VBA, et afficher dans 2 colonnes le temps et la valeurs correspondante...

    Avez-vous un exemple adapté SVP ?
    Il se pourrait qu'il manque des infos pour que vous puissiez me dépanner rapidement, donc n'hésitez pas à me demander plus de détails s'il le faut.

    Merci beaucoup par avance pour votre aide précieuse !

    Note : Je précise que je ne pourrai pas envoyer les bouts de code correspondants, car l'exemple que j'ai fourni ci-dessus ne représente pas la réalité, et je ne peux pas envoyer l'original...

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    j'ai une fonction C
    Ici c'est le forum VBA Excel !!!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    Bonjour,
    Oui justement je compte pouvoir appeler ma fonction présente dans ma DLL depuis du code VBA sous Excel, afin d'afficher les résultats dans une grille Excel.
    Or, j'ai besoin de toutes les étapes, y compris la partie C en amont, avec les __stdcall.
    Me suis-je vraiment trompé de forum ? Dommage, c'est quand même fortement en relation avec Excel et VBA...
    Peut-on quand même me conseiller un bout de code ? S'il n'y a que la partie VBA (puisqu'on dirait que le code C est proscrit), ca me suffira peut-être.
    Merci.

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    puisqu'on dirait que le code C est proscrit
    Que veux tu dire par là.

    En VBA tu peux utiliser des dll, c'est ça que tu veux faire, j'ai du mal à comprendre le but de ta macro sous excel ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    Cher Aalex,

    Merci pour l'interet que tu portes à ma question, même si j'avoue que je ne sais pas quel est le meilleur endroit pour poster ma demande...

    Je reprends donc mon besoin :

    Depuis Excel, mon bout de code VBA est censé appeler une fonction présente dans une DLL, qui doit me retourner un tableau de chaînes de caractères en sortie, pour que par exemple je boucle sur ce tableau en VBA, et que j'affiche le contenu résultat dans une colonne d'un de mes onglets Excel.

    Or, l'argument de la fonction C appelée via la DLL est un char ***...

    Et je ne sais pas comment :
    1. Transformer ma fonction C pour qu'elle soit comprise par VBA (SAFEARRAY ?).
    2. Déclarer les arguments de ma fonction dans VBA (Declare Function...). Dois-je déclarer un tableau de string ?
    3. Appeler la fonction pour remplir mon tableau via la fonction de ma DLL. Dois-je passer en argument de sortie de ma fonction le premier élément de mon tableau ?

    C'est pour cela que j'ai posté ma demande dans VBA, mais effectivement je peux aussi demander dans un autre forum (C par exemple).

    Sinon, as-tu des idées ?
    Et est-ce qu'il serait possible dans ce cas de me transmettre les bouts de code qui vont bien, par rapport à mon exemple du départ ?

    Merci et encore désolé si je pollue un peu le forum avec mon mix C-VBA...

Discussions similaires

  1. récupérer un char*
    Par mido1951 dans le forum C
    Réponses: 10
    Dernier message: 14/06/2013, 22h13
  2. récupérer un char au clavier
    Par artemis93 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/05/2013, 10h41
  3. Réponses: 20
    Dernier message: 02/04/2010, 11h02
  4. [C] Récupérer un résultat de fonction de type double
    Par EnigmuS dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 23/04/2007, 10h17
  5. Réponses: 3
    Dernier message: 15/02/2006, 17h27

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