Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

dll - passage de tableau

1 réponse
Avatar
rob
Bonjour,

J'ai créé une dll en C++ que je utilise dans Excel
et j'aimerais savoir comment faire passer des tableaux de double
entre Excel et cette dll.

Merci
++

1 réponse

Avatar
Laurent Longre
Bonjour,


J'ai créé une dll en C++ que je utilise dans Excel
et j'aimerais savoir comment faire passer des tableaux de double
entre Excel et cette dll.


Le moyen le plus simple (mais pas le plus élégant) : tu mets 3 arguments à ta
fonction : un pointeur vers double, le nombre de lignes et le nombre de colonnes
de ton tableau. Dans VBA tu passes à la fonction la référence du premier élément
du tableau, le nombre de colonnes et le nombre de lignes.

Par exemple :

DLL :

extern "C" __declspec(dllexport) double WINAPI MaFonction(double* Tableau,
int Lignes, int Cols)
{
double Ret=0;
for(int i=0; i < Lignes*Cols; i++) Ret+=Tableau[i];
return Ret;
}

VBA :

Private Declare Function MaFonction Lib "C:TempTest.dll" _
(Item0 As Double, ByVal Lignes As Long, ByVal Colonnes As Long) As Double

Sub Test()

Dim Tableau(0 To 9, 0 To 9) As Double
Dim I As Integer, J As Integer

For I = 0 To 9
For J = 0 To 9
Tableau(I, J) = I * J
Next J
Next I

MsgBox MaFonction(Tableau(0, 0), 10, 10)

End Sub

Si ton tableau n'a qu'une dimension : MaFonction(Tableau(0), Lignes, Colonnes)

Cordialement,

Laurent