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 :

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
Le code C de ma dll est repris ci-dessous :
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.