VBA - DLL en C & Structures [Résolu]

Fermé
Darkantas Messages postés 6 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 4 juin 2012 - Modifié par Darkantas le 28/05/2012 à 14:45
Darkantas Messages postés 6 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 4 juin 2012 - 28 mai 2012 à 14:44
Bonjour,

Je rencontre actuellement un problème, j'ai beau chercher je ne trouve pas de réponse concluante alors je tente ma chance ici.

Je souhaite optimiser un programme en VBA en développant des DLL en C. Donc j'ai bien crée ma DLL, j'arrive à appeler ses fonctions dans mon code en VBA, mon soucis est que je n'arrive pas à passer des structures VBA (Type / End Type) à mes DLL en C.

Si, dans le prototype de la fonction dans le code VBA, je mets ma structure, j'ai une erreur comme quoi je ne peux pas passer cette variable ByRef.

Declare Function ma_func Lib "MaLib.dll" (ByRef maStruct As MonType) As Integer


Si je la met en Variant l'erreur est la suivante : "Seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent être convertis depuis ou vers un variant, ou passés à des fonctions à liaison tardive".

Declare Function ma_func Lib "MaLib.dll" (ByRef maStruct As Variant) As Integer


Quelle est donc la solution ?

Merci d'avance.

1 réponse

Darkantas Messages postés 6 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 4 juin 2012
28 mai 2012 à 14:44
Finalement j'ai trouvé une page de Microsoft : https://support.microsoft.com/fr-fr/help/466741

Du coup mon erreur était un simple oublie de parenthèses, ma fonction devait prendre une liste de structure.

Pour ceux qui voudraient faire la même chose et qui rencontrent des problèmes voici à quoi ressemble mon code qui fonctionne maintenant :

Type maStruct
// variables
End Type

Declare Function mafunc Lib "MaLib.dll" (ByRef maVar() As maStruct) As Integer


et puis dans mon code

Sub ...()

Call mafunc maVar


Voilà :)
0