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

Macros et VBA Excel Discussion :

Passage d'une structure entre vba et dll c++


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Par défaut Passage d'une structure entre vba et dll c++
    Bonjour à tous,

    Je souhaite transférer dans une structure C++ via une dll, le contenu d'une structure (UDT) VBA.

    Mon code VBA est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Private Declare Function Cpp_TEST1 Lib "C:\Users\\TEST1.dll" (ByRef iStruct As myStruct) As Double
     
    Type myStruct
        n As Long
        data() As Long
        rData As Boolean
    End Type
     
     
    iStruct.n = 10
    iStruct.rData= True
    ReDim iStruct.data(1 To 12)
     
     
    iStruct.data(1) = 1
    iStruct.data(2) = 2
    iStruct.data(3) = 3
    iStruct.data(4) = 4
    iStruct.data(5) = 5
    iStruct.data(6) = 6
    iStruct.data(7) = 7
    iStruct.data(8) = 8
    iStruct.data(9) = 9
    iStruct.data(10) = 10
    iStruct.data(11) = 11
    iStruct.data(12) = 12
     
     
    Test1 = Cpp_TEST1(iStruct)
    Du coté du C++, j' effectue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    struct myStruct{    
        long n;
        long  *data;
        VARIANT_BOOL rData;
    };
     
    XLSTATLINK_API double __stdcall Cpp_TEST1(myStruct *iStruct)
    {
        return 1;
    }
    Lorsque j'espionne la donnée iStruct, je récupère les bonnes valeurs pour les donnée n et rData.
    Pour le tableau de long, les données obtenues sont aléatoires :

    [0] 8388609 long
    [1] 4 long
    [2] 0 long
    [3] 234122136 long
    [4] 12 long
    [5] 1 long
    [6] 634790639 long
    [7] -2013222912 long
    [8] 352064696 long
    [9] 352064792 long
    [10] 1771379816 long
    [11] 537 long
    Mon problème est que je n'arrive pas récupérer le tableau contenu dans la structure VBA à partir de la DLL C++ !!

    Merci d'avance pour votre aide ;-)

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Je crois qu'il faut passer que le 1er élément du tableau comme semble le confirmer le lien suivant
    http://rp.developpez.com/vb/tutoriels/dll/#LXI

Discussions similaires

  1. Passage d'une structure entre vb et dll c++
    Par Samo33 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 13/05/2015, 16h38
  2. Passage d'une structure dans une fonction
    Par god_enel dans le forum C
    Réponses: 7
    Dernier message: 01/02/2007, 15h33
  3. Passage d'une structure dans une fonction
    Par god_enel dans le forum C
    Réponses: 8
    Dernier message: 22/01/2007, 15h35
  4. Réponses: 15
    Dernier message: 24/01/2006, 16h08
  5. [MFC] Passage d'une structure dans une method
    Par KPitN dans le forum MFC
    Réponses: 5
    Dernier message: 18/06/2004, 10h11

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