VBA - DLL en C & Structures [Résolu]
Darkantas
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Darkantas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Darkantas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
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]
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Xinput1_3.dll - Forum Windows
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- 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à :)