Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2007, 15h20   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
Par défaut dll c++ / VBA

Bonjour,
J'ai un petit problème avec une dll. En effet, j'aimerais manipuler des matrice avec des dll a fin de faire des calculs matriciels sous Excel. Pour cela j'ai commencé par une simple dll:

Code :
1
2
3
4
// in : matrix , out : matrix
LPSAFEARRAY FAR *  __stdcall Optimization(LPSAFEARRAY FAR *variance){ 
    return variance;
}
et je l'appelle sous VBA :

Code :
1
2
3
4
5
6
7
8
9
10
11
    Declare Function Optimization Lib "Optimization.dll" (ByRef integerArrayA() As Double) As Double
    Sub test1()
       Dim a() As Double
       ReDim a(1 To 3, 1 To 3) As Double
           For u = 1 To 3
               For v = 1 To 3
                   a(u, v) = 0
               Next
           Next
    bb = Optimization(a())
    End Sub
Comme vous pouvez le voir, c'est très simple; par contre quant je compile il me sort cette erreur : " Expression trop complex" (i.e. bb = Optimization(a()) )
Merci d'avance.

Ya²
yasquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 18h11   #2
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
Et sans les parentheses?
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 18h24   #3
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
même chose !!! ça marche pa
yasquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 18h51   #4
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
Et en modifiant la DLL ?
Code :
1
2
3
LPSAFEARRAY FAR *  __stdcall Optimization(LPSAFEARRAY FAR *variance){ 
    return *variance;
}
Desole, mais je n'ai que vagues souvenirs de C++...
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 19h04   #5
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
là ça bloque au niveau de la compilation de la dll, car la valeur retournée est un double pointeur de la structure LPSAFEARRAY...
yasquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 19h09   #6
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
Tu trouveras surement plus d'exemples dans la FAQ C++ / VB : ici ou
Si tu trouves la solution, ca m'interesse quand meme...
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h40.


 
 
 
 
Partenaires

Hébergement Web