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
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //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
En apellant en argument juste le 1er element du tableau, VBA me met cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 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
Et en apellant en argument juste le nom du tableau comme adresse, VBA me met cette erreur :"call fi.transformTab(tabVBA(1), 5)"
ERREUR D'EXECUTION '5'
ARGUMENT OU APPEL DE PROCEDURE INCORRECT
***********************************"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