IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Comment passer en VBA l'adresse d'un tableau,en argument d'une fonction ?(d'1 dll C#)


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Comment passer en VBA l'adresse d'un tableau,en argument d'une fonction ?(d'1 dll C#)
    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

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ton assembly c#, tu l'as enregistrer pour com interop ?

Discussions similaires

  1. passer un tableau en argument dans une fonction
    Par rogerio dans le forum Débuter
    Réponses: 6
    Dernier message: 30/10/2008, 12h15
  2. Comment passer un argument dans une fonction
    Par DeezerD dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 22/01/2008, 18h13
  3. Réponses: 7
    Dernier message: 04/05/2007, 12h20
  4. Réponses: 1
    Dernier message: 02/05/2007, 15h08
  5. Réponses: 17
    Dernier message: 24/11/2006, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo