|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 6 ![]() |
Bonjour le forum,
Tout d'abord, veuillez m'excuser par avance 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 : Cette fonction me retourne donc une liste de chaîne de caractères. J'aimerais pouvoir l'inclure dans une DLL, du style : Code :
extern "C" __declspec(dllexport) long __stdcall RecupListe(char ***MaListe) J'ai pour l'instant déclaré la fonction en VBA de la façon suivante : Code :
Public Declare Function RecupListe Lib "maDLL.dll" Alias "_RecupListe@8" (ByRef lptArray As Long) As Long 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 :
extern "C" __declspec(dllexport) long __stdcall RecupValeurs(double **LeTemps, double **LaValeur) 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... Dernière modification par AlainTech ; 03/07/2009 à 05h42. Motif: Balises [code] |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : septembre 2007 Messages : 1 570 ![]() |
Bonjour,
Citation:
__________________
|
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 6 ![]() |
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. Dernière modification par AlainTech ; 03/07/2009 à 05h43. Motif: Suppression de la citation |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : septembre 2007 Messages : 1 570 ![]() |
Citation:
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 ?
__________________
|
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 6 ![]() |
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... Dernière modification par AlainTech ; 03/07/2009 à 07h16. Motif: Suppression de la citation |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com