Lorelei42
Messages postés24Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention 4 août 2004
-
3 août 2004 à 16:06
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
11 avril 2007 à 15:27
Bonjour,
J'ai créé une dll et j'aimerais qu'elle soit utilisée dans Excel.
Comment dois-je m'y prendre ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 3 août 2004 à 16:23
Tu voudrais que le programme Excel utilise ta dll ?
J'crois pas que ce soit possible ... Je sais juste que tu peux créer des programmes en VBA et les executer avec Excel, pour remplir des feuilles de calculs par exemple, ou effectuer des calcluls sur une feuille, ....
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 août 2004 à 16:31
bouhhhhhhh, pas de prob d'utilisation des DLLs, j'ai fort bien gagne ma vie a ecrire cela pendant un bon moment.
Faudrait juste savoir ce qui pose probleme.
Lorelei42
Messages postés24Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention 4 août 2004 3 août 2004 à 16:51
Novice en ce domaine, tout peut paraître me poser problème !!!
J'ai crû comprendre qu'on pouvait utiliser les fonctions:
FONCTION.APPELANTE et REGISTRE.NUMERO
Mais comme mes arguments sont des structures je ne sais trop comment les passer en argument!
De plus, je me demande si il faut programmer une macro ou utiliser les fonctions citées ci-dessus comme ça dans la feuille ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 août 2004 à 17:02
Comme partout dans VB, Declare Function .....
FONCTION.APPELANTE et REGISTRE.NUMERO, c'est quoi ces machins ???
Une structure VB se passe en ByRef comme de juste puisqu'on attend generalement l'adresse dans une DLL.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 3 août 2004 à 17:19
Lorelei42> En gros faut que tu appelles ta DLL a l'aide de code VB. Tu auras des exemple d'appelle de DLL sur www.vbfrance.com.
Pour cela dans excel tu vas dans :
Outil -> Macro -> Visual Basic Editors
Une fenetre va s'ouvrir, dans laquelle tu va devoir ajouté un userform qui va te permettre d'appeller ta DLL. Pour ajouter le UserForm va dans :
Insertion -> UserForm
Puis dans ton UserForm tu mets ton code d'appel a la DLL.
Faut que tu t'y connaisses quand meme un peu en VB. C'est très diffèrent du C mais aussi vraiment très simple.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 3 août 2004 à 18:11
J'etais occupe a relancer ce put.. de server qui avait plante.
Va donc voir sur vbfrance, j'y ai mis une DLL (version 8 ou 9), j'ai fait exemple d'appel de tout ce qu'elle exporte depuis un xls, tu trouveras donc tout ce dont tu as besoin.
Et les + de 1000 lignes d'ASM de la DLL en prime.
Lorelei42
Messages postés24Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention 4 août 2004 4 août 2004 à 10:22
J'ai encore une question !
Ma dll est programmée en C.
Mes arguments d'entrée de ma fonction sont des pointeurs sur des structures que j'ai définies ...
1) je dois redéfinir mes structures dans visual basic ? mais comment faire quand j'ai des pointeurs ?
2) En fait : Que faire quand j'ai des pointeurs !!!! Car pas de pointeurs dans Visual basic ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 août 2004 à 10:27
Certain que pas de pointeurs en vb mais tu peux les declarer 'As Long' chez VB, le seul truc, ne pas essayer de s'en servir comme pointeur. Ira bon seulement si tu repasses ensuite la struct a la DLL.
Structure doit etre redefinie dans vb exact comme definie dans DLL, attention aux types et longueur de chaque membre.
pour repondre à la question, il faut juste ouvrir l'Excel, ouvrir le VBA, et mettre une declararion dans le module du VBA d'Excel.:
Declare Function somat Lib "C:\DllSimple.dll" (ByVal x As Integer, ByVal y As Integer) As Integer
ça marche parfaitement dans l'environnement de developpement. J'utilise l'Excel et i fait appel à l fonction et donne le resultat.
PAr contre, si je copie la DLL et je fais la déclaration dans un autre ordinateur, ça ne marche plus. Quelqu'un saurrait me dire pour quoi? Dois-je faire quoi pour que ça marche?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 avril 2007 à 15:27
C'est As Long, params 16 bits sont du siècle dernier, As Integer est à bannir partout dans VB.
Où est le message d'erreur, il n'y a pas de devin ici.
Si c'est que ne trouve pas ta DLL, suffit de mettre la dll dans dossier du xls et d'un appel SetCurrentDirectory() sur ThisWorkbook.Path dans l'event d'ouverture du classeur xls.