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
Partager