OVH Cloud OVH Cloud

DLL Arguments

6 réponses
Avatar
Yves
J'ai un probl=E8me pour passer des arguments dans une DLL=20
cr=E9=E9 sous VB et appel=E9e sous VBA d=E8s lors que les=20
arguments sont des "Type...End Type". Sachant que je=20
d=E9clare les "Type" sous VB et sous VBA. Une id=E9e?

6 réponses

Avatar
Laurent Jordi \(www.ezlogic.mc\)
Salut

A mon avis tu ne peux pas, en tout cas, penses aux byval...

@+

LJ



"Yves" a écrit dans le message de
news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?
Avatar
Yves
Ce serait curieux vu qu'en C++ çà marche très bien; je
passe les arguments en ByRef: est-ce là que çà cloche?
-----Message d'origine-----
Salut

A mon avis tu ne peux pas, en tout cas, penses aux


byval...

@+

LJ



"Yves" a écrit dans


le message de
news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?


.



Avatar
ng
si bien sur on peux (passage en byref (cad pointeur), il suffit que le type
(structure) soit déclaré en publique dans la classe.

--
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/



Yves a écrit :

Ce serait curieux vu qu'en C++ çà marche très bien; je
passe les arguments en ByRef: est-ce là que çà cloche?
-----Message d'origine-----
Salut

A mon avis tu ne peux pas, en tout cas, penses aux byval...

@+

LJ



"Yves" a écrit dans le message
de news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?


.




Avatar
Yves
Merci pour la réponse mais je ne suis pas sûr de
comprendre;
Je passe mes arguments effectivement en Byref; Mes
variables sont déclarées en "Type...End Type" à la fois
sous VB (donc dans ma dll) et sous VBA. Je déclare ensuite
sous le module VBA les Type en publique (l'appel de ma dll
se fait en early-binding); Plus explicitement exemple de
ce que je fais et qui ne marche pas :

'*** VB (Création Dll) (Dans une classe)
Type Test
x as double
y as double
End Type

Function MaFonction (Byref MonTest as Test) as double

'Calcul sur x et y

End Function

'*** VBA (Dans un module)
Type Test
x as double
y as double
End Type

Public MonTest as Test

Declare MaFonction Lib"" (Byref MonTest as Test) as Double

Sub Taux()

Dim oMonObjet as MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse

var= oMonObjet.MaFonction(MonTest)

end Sub

Merci d'avance
-----Message d'origine-----
si bien sur on peux (passage en byref (cad pointeur), il


suffit que le type
(structure) soit déclaré en publique dans la classe.

--
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/



Yves a écrit :

Ce serait curieux vu qu'en C++ çà marche très bien; je
passe les arguments en ByRef: est-ce là que çà cloche?
-----Message d'origine-----
Salut

A mon avis tu ne peux pas, en tout cas, penses aux






byval...

@+

LJ



"Yves" a écrit






dans le message
de news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?


.






.



Avatar
ng
Salut,

Pas besoin de redeclarer ton type sous VBA, mets le simplement en public ds
ta DLL :

Public Type Test
x as double
y as double
End Type

--
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/



Yves a écrit :

Merci pour la réponse mais je ne suis pas sûr de
comprendre;
Je passe mes arguments effectivement en Byref; Mes
variables sont déclarées en "Type...End Type" à la fois
sous VB (donc dans ma dll) et sous VBA. Je déclare ensuite
sous le module VBA les Type en publique (l'appel de ma dll
se fait en early-binding); Plus explicitement exemple de
ce que je fais et qui ne marche pas :

'*** VB (Création Dll) (Dans une classe)
Type Test
x as double
y as double
End Type

Function MaFonction (Byref MonTest as Test) as double

'Calcul sur x et y

End Function

'*** VBA (Dans un module)
Type Test
x as double
y as double
End Type

Public MonTest as Test

Declare MaFonction Lib"" (Byref MonTest as Test) as Double

Sub Taux()

Dim oMonObjet as MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse

var= oMonObjet.MaFonction(MonTest)

end Sub

Merci d'avance
-----Message d'origine-----
si bien sur on peux (passage en byref (cad pointeur), il suffit que
le type (structure) soit déclaré en publique dans la classe.

--
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/



Yves a écrit :

Ce serait curieux vu qu'en C++ çà marche très bien; je
passe les arguments en ByRef: est-ce là que çà cloche?
-----Message d'origine-----
Salut

A mon avis tu ne peux pas, en tout cas, penses aux byval...

@+

LJ



"Yves" a écrit dans le
message de news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?


.






.




Avatar
ng
ReSalut,

Ton code VBA ne va pas ! Ce n'est pas des DLL API mais bien du COM :


Public MonTest as Test

Sub Taux()

Dim oMonObjet as MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse

MsgBox oMonObjet.MaFonction(MonTest)

end Sub

--
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/



Yves a écrit :

Merci pour la réponse mais je ne suis pas sûr de
comprendre;
Je passe mes arguments effectivement en Byref; Mes
variables sont déclarées en "Type...End Type" à la fois
sous VB (donc dans ma dll) et sous VBA. Je déclare ensuite
sous le module VBA les Type en publique (l'appel de ma dll
se fait en early-binding); Plus explicitement exemple de
ce que je fais et qui ne marche pas :

'*** VB (Création Dll) (Dans une classe)
Type Test
x as double
y as double
End Type

Function MaFonction (Byref MonTest as Test) as double

'Calcul sur x et y

End Function

'*** VBA (Dans un module)
Type Test
x as double
y as double
End Type

Public MonTest as Test

Declare MaFonction Lib"" (Byref MonTest as Test) as Double

Sub Taux()

Dim oMonObjet as MonProjet.MaClasse
Set oMonObjet = New MonProjet.MaClasse

var= oMonObjet.MaFonction(MonTest)

end Sub

Merci d'avance
-----Message d'origine-----
si bien sur on peux (passage en byref (cad pointeur), il suffit que
le type (structure) soit déclaré en publique dans la classe.

--
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/



Yves a écrit :

Ce serait curieux vu qu'en C++ çà marche très bien; je
passe les arguments en ByRef: est-ce là que çà cloche?
-----Message d'origine-----
Salut

A mon avis tu ne peux pas, en tout cas, penses aux byval...

@+

LJ



"Yves" a écrit dans le
message de news:295301c47df9$54556db0$
J'ai un problème pour passer des arguments dans une DLL
créé sous VB et appelée sous VBA dès lors que les
arguments sont des "Type...End Type". Sachant que je
déclare les "Type" sous VB et sous VBA. Une idée?


.






.