VBA - DLL en C & Structures [Résolu]
Darkantas
Messages postés
7
Statut
Membre
-
Darkantas Messages postés 7 Statut Membre -
Darkantas Messages postés 7 Statut Membre -
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.
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".
Quelle est donc la solution ?
Merci d'avance.
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.
A voir également:
- VBA - DLL en C & Structures [Résolu]
- Incompatibilité de type vba ✓ - Forum Programmation
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Xinput1_3.dll - Forum Windows
- Advapi32.dll ccleaner ✓ - Forum Windows
1 réponse
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 :
et puis dans mon code
Voilà :)
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à :)