OVH Cloud OVH Cloud

DLL

9 réponses
Avatar
jules
Bonjour,

Je souhaites compiler mon programme vb (en faire une DLL)=20
et appeler la DLL sous Excel dans VBA. Probl=E8me : une fois=20
la dll cr=E9=E9e, j'ai constamment l'erreur 453 : fonction=20
introuvable dans la DLL.
Y-a-t-il une chose particuli=E8re =E0 faire pour permettre=20
d'appeler une DLL sous VBA?

Merci

9 réponses

Avatar
ng
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu compilé cette DLL ?
L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une DLL)
et appeler la DLL sous Excel dans VBA. Problème : une fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci


Avatar
Jules
Pour la compilation : après avoir écrit mon code dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation (dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu


compilé cette DLL ?
L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une




DLL)
et appeler la DLL sous Excel dans VBA. Problème : une




fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci




.



Avatar
ng
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM Interop, sous VB tu n'as
rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la référence vers la DLL au
projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation (dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu compilé cette
DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une DLL)
et appeler la DLL sous Excel dans VBA. Problème : une fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci




.




Avatar
Jules
Merci beaucoup; il me manquait effectivement la ligne de
code CreateObject (n'étant pas versé dans le pourquoi du
comment de ces choses je ne sais pas bien à quoi çà sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM


Interop, sous VB tu n'as
rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la référence


vers la DLL au
projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un


WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation




(dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu






compilé cette
DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une








DLL)
et appeler la DLL sous Excel dans VBA. Problème : une








fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci




.






.



Avatar
Jules
Autre question : y-a-t-il un gain de temps important entre
un programme en VB et son équivalent compilé en une DLL?

-----Message d'origine-----
Merci beaucoup; il me manquait effectivement la ligne de
code CreateObject (n'étant pas versé dans le pourquoi du
comment de ces choses je ne sais pas bien à quoi çà sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM


Interop, sous VB tu n'as
rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la référence


vers la DLL au
projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un


WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code dans






un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation




(dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent






sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se






trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu






compilé cette
DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une








DLL)
et appeler la DLL sous Excel dans VBA. Problème :










une
fois
la dll créée, j'ai constamment l'erreur 453 :










fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour










permettre
d'appeler une DLL sous VBA?

Merci




.






.



.



Avatar
ng
Salut,

Non s'il sont compilés ts les 2 de la mm facon, ca revient à peu près au mm.
L'avantage d'une DLL est de pouvoir utiliser ses fonctions depuis d'autres
progs.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Autre question : y-a-t-il un gain de temps important entre
un programme en VB et son équivalent compilé en une DLL?

-----Message d'origine-----
Merci beaucoup; il me manquait effectivement la ligne de
code CreateObject (n'étant pas versé dans le pourquoi du
comment de ces choses je ne sais pas bien à quoi çà sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM Interop, sous
VB tu n'as rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la référence vers la
DLL au projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation (dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-tu compilé cette
DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une DLL)
et appeler la DLL sous Excel dans VBA. Problème : une fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci




.






.



.




Avatar
Jules
Pas sûr de comprendre :
ma comparaison est entre un programme VB qui tourne sans
etre compilé et le même compilé.
J'ai constaté par ailleurs que un programme en VBA (non
compilé) met bcp plus de temps à tourner que le même
programme transcris en C++ et compilé. est ce aussi vrai
si je transcris mon programme VBA en VB et que je le
compile? le gain de temps est-il toujours automatique ou
celà dépend du type de programme?
Merci encore
-----Message d'origine-----
Salut,

Non s'il sont compilés ts les 2 de la mm facon, ca


revient à peu près au mm.
L'avantage d'une DLL est de pouvoir utiliser ses


fonctions depuis d'autres
progs.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Autre question : y-a-t-il un gain de temps important




entre
un programme en VB et son équivalent compilé en une DLL?

-----Message d'origine-----
Merci beaucoup; il me manquait effectivement la ligne






de
code CreateObject (n'étant pas versé dans le pourquoi






du
comment de ces choses je ne sais pas bien à quoi çà






sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM








Interop, sous
VB tu n'as rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la








référence vers la
DLL au projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un








WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code










dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation










(dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent










sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se










trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-












tu compilé cette
DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a












écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire














une DLL)
et appeler la DLL sous Excel dans VBA. Problème :














une fois
la dll créée, j'ai constamment l'erreur 453 :














fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour














permettre
d'appeler une DLL sous VBA?

Merci




.






.



.






.



Avatar
ng
Salut,

ma comparaison est entre un programme VB qui tourne sans
etre compilé et le même compilé.


C'est normal que du code interprété tourne moins vite que du code compilé
(en langage machine/natif).

J'ai constaté par ailleurs que un programme en VBA (non
compilé) met bcp plus de temps à tourner que le même
programme transcris en C++ et compilé.


Les programmes VBA ne sont pas compilés mais interprétés, c'est donc normal
que le C++ compilé soit plus rapide.


si je transcris mon programme VBA en VB et que je le
compile?


Oui un programme VB compilé sera plus rapide (on arrive à des vitesses
comparables au C++ pour certain type de programme/instruction (boucle...)),
il suffit de regarder le code ASM pour s'en rendre compte.

On peut ainsi gagner du temps d'execution en compilant des fonctions
"gourmandes" dans une DLL et en l'appelant depuis du langage interprété
(VBA/VBS).
(on gagne même encore plus avec une DLL API en C++).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pas sûr de comprendre :
ma comparaison est entre un programme VB qui tourne sans
etre compilé et le même compilé.
J'ai constaté par ailleurs que un programme en VBA (non
compilé) met bcp plus de temps à tourner que le même
programme transcris en C++ et compilé. est ce aussi vrai
si je transcris mon programme VBA en VB et que je le
compile? le gain de temps est-il toujours automatique ou
celà dépend du type de programme?
Merci encore
-----Message d'origine-----
Salut,

Non s'il sont compilés ts les 2 de la mm facon, ca revient à peu
près au mm. L'avantage d'une DLL est de pouvoir utiliser ses
fonctions depuis d'autres progs.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Autre question : y-a-t-il un gain de temps important entre
un programme en VB et son équivalent compilé en une DLL?

-----Message d'origine-----
Merci beaucoup; il me manquait effectivement la ligne de
code CreateObject (n'étant pas versé dans le pourquoi du
comment de ces choses je ne sais pas bien à quoi çà sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM Interop, sous
VB tu n'as rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la référence vers la
DLL au projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pour la compilation : après avoir écrit mon code dans un
projet ActiveX DLL, je fais simplement "create dll";
Exportation : je n'ai aucune procédure d'exportation (dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x as
double) as double
puis dans mon code VBA j'appelle la fonction se trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as- tu compilé
cette DLL ? L'as-tu expotrée pour COM (COM Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a












écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire une DLL)
et appeler la DLL sous Excel dans VBA. Problème : une fois
la dll créée, j'ai constamment l'erreur 453 : fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour permettre
d'appeler une DLL sous VBA?

Merci




.






.



.






.




Avatar
Jules
très intéressant merci; je vais donc bosser sur la
compilation de mon code VBA en passant par VB.
Merci encore
-----Message d'origine-----
Salut,

ma comparaison est entre un programme VB qui tourne sans
etre compilé et le même compilé.


C'est normal que du code interprété tourne moins vite que


du code compilé
(en langage machine/natif).

J'ai constaté par ailleurs que un programme en VBA (non
compilé) met bcp plus de temps à tourner que le même
programme transcris en C++ et compilé.


Les programmes VBA ne sont pas compilés mais interprétés,


c'est donc normal
que le C++ compilé soit plus rapide.


si je transcris mon programme VBA en VB et que je le
compile?


Oui un programme VB compilé sera plus rapide (on arrive à


des vitesses
comparables au C++ pour certain type de


programme/instruction (boucle...)),
il suffit de regarder le code ASM pour s'en rendre compte.

On peut ainsi gagner du temps d'execution en compilant


des fonctions
"gourmandes" dans une DLL et en l'appelant depuis du


langage interprété
(VBA/VBS).
(on gagne même encore plus avec une DLL API en C++).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Pas sûr de comprendre :
ma comparaison est entre un programme VB qui tourne sans
etre compilé et le même compilé.
J'ai constaté par ailleurs que un programme en VBA (non
compilé) met bcp plus de temps à tourner que le même
programme transcris en C++ et compilé. est ce aussi vrai
si je transcris mon programme VBA en VB et que je le
compile? le gain de temps est-il toujours automatique ou
celà dépend du type de programme?
Merci encore
-----Message d'origine-----
Salut,

Non s'il sont compilés ts les 2 de la mm facon, ca






revient à peu
près au mm. L'avantage d'une DLL est de pouvoir






utiliser ses
fonctions depuis d'autres progs.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a écrit :

Autre question : y-a-t-il un gain de temps important








entre
un programme en VB et son équivalent compilé en une








DLL?

-----Message d'origine-----
Merci beaucoup; il me manquait effectivement la










ligne de
code CreateObject (n'étant pas versé dans le










pourquoi du
comment de ces choses je ne sais pas bien à quoi çà










sert
mais çà marche)

Encore une fois merci beaucoup
Jules

-----Message d'origine-----
Salut,

Tu es sous VB ou VB.Net ?

Si tu es sous .Net il faut compiler ta DLL pour COM












Interop, sous
VB tu n'as rien de plus a faire.

Ensuite l'appel depuis VBA se fait ainsi :

'//En late-binding :
Dim oMonObjet As Object
Set oMonObjet = CreateObject("MonProjet.MaClasse")
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//En early-binding (il faudra déjà ajouter la












référence vers la
DLL au projet VBA en cours) :

Dim oMonObjet As MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse
Call MsgBox(oMonObjet.MaFonction(x))
Set oMonObjet = Nothing

'//Tu pourras utiliser aussi les événement avec un












WithEvents
Dim WithEvents oMonObjet As MonProjet.MaClasse

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Jules a












écrit :

Pour la compilation : après avoir écrit mon code














dans un
projet ActiveX DLL, je fais simplement "create














dll";
Exportation : je n'ai aucune procédure














d'exportation (dans
mes programmes en C++ j'ai bien les commandes
d'exportations mais je n'ai pas trouvé














l'équivalent sous
VB);
Appel de la DLL sous VBA : j'ai commencé par :
Declare Fundtion test Lib"chemin d'accès"(byval x














as
double) as double
puis dans mon code VBA j'appelle la fonction se














trouvant
dans la dll comme toute autre fonction.

Merci de ton aide

-----Message d'origine-----
Salut,

Comment appeles-tu t'as DLL sous VBA ? Comment as-
















tu compilé
cette DLL ? L'as-tu expotrée pour COM (COM
















Interop) ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



jules a












écrit :

Bonjour,

Je souhaites compiler mon programme vb (en faire


















une DLL)
et appeler la DLL sous Excel dans VBA.


















Problème : une fois
la dll créée, j'ai constamment l'erreur 453 :


















fonction
introuvable dans la DLL.
Y-a-t-il une chose particulière à faire pour


















permettre
d'appeler une DLL sous VBA?

Merci




.






.



.






.






.