|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 5 ![]() |
Bonjour tout le monde !
Mon titre n'est pas clair alors je m'explique: J'ai ecris une petite fonction a titre d'exemple TRANSFORMTAB dans ma dll C# (dll qui sert de bibliotheques de sous-fonctions que j'appelle dans mon VBA) , ma fonction prend en argument l'adresse d'un tableau et sa taille, et rajoute 1000 à chacun de ses elements; => mais je n'arrive pas a utiliser ma fonction dans mon VBA excel ... *************** CODE DLL Code C :
************** CODE VBA Code :
Citation:
Citation:
Ma declaration par reference en VBA est-elle correcte ? Ou bien faudrait-il changer mon code C# ? Merci à tous pour vos remarques … Russel |
||||||
|
|
00
|
|
|
#2 | ||||
|
Membre habitué
![]() Inscription : juillet 2005 Messages : 141 ![]() |
Bonjour,
justement je me posait cette question ce matin j'ai pas du tout testé et je sais pas vraiment faire appel à une dll en C mais déja, je remplacerais ces différentes lignes : Code :
Code :
rémi |
||||
|
|
00
|
|
|
#3 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Déjà, si tu appelles une fonction, ta sub attend un résultat
Déjà, là tu as sans doute... (pt être même nécessairement) une erreur. Ensuite, si, dans ta fonction, tu attends un tableau, je ne sais pas ce que dit le c++ mais en VBA, la fonction attend la variable tableau sans les dimensions. fonction dans laquelle on récupère les dimensions du tableau Code :
A+ |
||
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 5 ![]() |
Merci Gruget et Ouskel'n'or, j'ai essayé ce que vous avez dit, mais ca n'a rien changé ... :-(
Au fait ma dll n'est pas écrite en C ni en C++ mais en Csharp, elle contient d'autres fonctions simples (comme somme (long a,long b) par ex. qui marchent bien lorque je les appelle de la meme maniere dans VBA) Le probleme reste de passer a tranformTab( ) un tableau de donnees sur lequel il va travailler ... J'ai essaye ceci en Csharp: (je lui passe un objet en argument plutot qu'un tableau de long) : Code c :
et en VBA: Code :
mais ca bug toujours, avec la declaration proposée par Gruget, c'est idem ... Merci si vous trouvez qq chose |
||||
|
|
00
|
|
|
#5 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
A quoi te sert de créer un objet ? Tu ne peux pas simplement l'appeler avec ses paramètres ? La syntaxe de Gruget devrait alors fonctionner... (?)
|
|
|
00
|
|
|
#6 | ||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 5 ![]() |
Re-Bonjour, j'ai tjs le meme probleme pour passer mon tableau dim tab(1 to 5) as long à une fonction de ma DLL-Csharp qui va traiter le tableau ( par exemple en multipliant chaque element par 2)
Il parait qu'il y a un probleme de transtypage, que VBA stocke les adresses des tableaux en SAFEARRAY et le probleme c'est que je n'ai pas de SAFEARRAY en visual C# Ouskel'n'or en passant juste l'adresse du tableau a la fonction il ne reconnait pas l'adresse , voila pourkoi il faudrait (peut etre ) encapsuler tout mon tableau dans un objet que j'enverrai à ma DLL C-sharp **********CODE DLL C-SHARP : Code c :
**********CODE VBA : Code :
|
||||
|
|
00
|
|
|
#7 |
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 676 ![]() |
russel92,
Veux-tu bien utiliser les balises [code] quand tu postes du code? Je n'ai pas envie de le faire pour toi à chaque fois. Merci
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
|
|
00
|
|
|
#8 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Désolé mais je ne peux pas t'aider. Simplement une chose, "en principe", quand on fait appel à fonction, on attend quelque chose et ton call me gène.
Result = Lafonction me paraîtrait plus orthodoxe. pour le reste, à part écrire ta fonction en VBA... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com