Bonjour à tous,
C'est mon tout premier post ! J'ai besoin de faire passer une structure de VBA vers une DLL que j'ai programée.
Je me suis basé sur le tutoriel http://rp.developpez.com/vb/tutoriels/dll/.
J'ai voulu tester la procédure avec un script simple, une structure élémentaire et une DLL aussi simple pour pouvoir étendre à des DLL et scripts plus complexes.
Voici le script VBA :
Le code C de ma dll est repris ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Private Type udt a As Long b As Long End Type Private Declare Sub Additionne Lib "test.dll" (ByRef usertype As udt) Sub CommandButton1_Click() Dim usertype As udt usertype.a = 2 usertype.b = 3 Additionne (usertype) Range("tota").Value = usertype.a Range("totb").Value = usertype.b End Sub
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <stdlib.h> #include <string.h> #define EXPORT __declspec(dllexport) // définit la macro EXPORT typedef struct UDT{ int a; int b; }; void EXPORT__stdcall Additionne(struct UDT usertype); void __stdcall Additionne(struct UDT *usertype) { usertype->a = 10; usertype->b = 20; return usertype; };
Je n'ai pas mis le fichier *.def qui permet d'exporter les fonctions en les renommant.
Merci d'avance pour votre aide.
PS : je ne savais pas si je devais poster ceci dans la rubrique VBA ou C.
Partager