Dll et Excel

Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004 - 3 août 2004 à 16:06
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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 ?

Merci

16 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 août 2004 à 16:19
C'est ou le probleme ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Derniè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, ....

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Derniè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 ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
3 août 2004 à 16:51
BruNews> Tu veux dire par la que Excel peut utiliser une dll qui lui est exterieure ? Mais comment ?

Shell
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
3 août 2004 à 17:00
Là est la question !

Mais le secret sera vite percé
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
3 août 2004 à 17:17
J'ai trouvé : FONCTION.APPELANTE et REGISTRE.NUMERO dans les fonctions de Excel !

Ok mais j'ai jamais programmé dans VB .
C'est pour ça que je cherchais direct dans excel.

Bon j'ai du boulot alors ...

Merci.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Derniè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.

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
4 août 2004 à 08:44
Merci !!!

Je vais me mettre à bosser.
Que ferais-je sans vous ?!

Bonne journée ...
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Derniè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 ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
4 août 2004 à 10:32
Ok!

Merci, je vais essayer ....
0
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008
11 avril 2007 à 15:13
Bonjour,

J'ai ecris une DLL très simple. Voilà le code:

extern

"C"
__declspec(
dllexport)
int
__stdcall somat (
int x,
int y)
{

int somatr;
somatr = x + y;

return (somatr);
}Voilà le fichier DEF:

LIBRARY "DllSimple"
;c_dll_4_vb.def LIBRARY c_dll_4_vb
EXPORTS
somat

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?

Merci d'avance, 

Otavio Reis
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous