Bonjour tout le monde !

Mon titre n'est pas clair alors je m'explique:
J'ai ecris une petite fonction a titre d'exemple TRANSFORMTAB dans ma dll C# (dll qui sert de bibliotheques de sous-fonctions que j'appelle dans mon VBA) , ma fonction prend en argument l'adresse d'un tableau et sa taille, et rajoute 1000 à chacun de ses elements; => mais je n'arrive pas a utiliser ma fonction dans mon VBA excel ...

*************** CODE DLL

//public unsafe void transformTab(long* tab,long maxi)

public void transformTab(long []monTab ,long maxi)
{
for (int i = 0; i < maxi; i++)
{
monTab[i] = i + 1000;
}
}


************** CODE VBA

Private Declare Function transformTab Lib _
"D:\FinanceLib\FinanceLib\bin\Debug\FinanceLib" _
(ByRef monTab As Long, ByVal maxi As Long)

Private Sub CmdCsharp_Click()

Dim i, tabVBA(1 To 5) As Long
Dim fi As Object
Set fi = CreateObject("FinanceLib.FinanceClass")
For i = 1 To 5
tabVBA(i) = i
Next i
Call fi.transformTab(tabVBA(1), 5)
End Sub

En apellant en argument juste le 1er element du tableau, VBA me met cette erreur :

"call fi.transformTab(tabVBA(1), 5)"

ERREUR D'EXECUTION '5'
ARGUMENT OU APPEL DE PROCEDURE INCORRECT

Et en apellant en argument juste le nom du tableau comme adresse, VBA me met cette erreur :

"call fi.transformTab(tabVBA, 5)"

ERREUR D'EXECUTION '13'
INCOMPATIBILITE DE TYPE

***********************************

Ma declaration par reference en VBA est-elle correcte ?
Ou bien faudrait-il changer mon code C# ?

Merci à tous pour vos remarques …

Russel