Inverser une matrice / DLL utilisee depuis VBA - C++ - Programmation
MarshPosté le 16-12-2005 à 11:48:03
Bonjour tout le monde! Voici mon premier code, alors soyez un peu indulgent. Je poste ce petit bout de code car je n ai pas trouve l equivalent sur ce forum mais aussi car j ai besoin d aide pour l ameliorer...
Ce code permet d inverser une matrice (n x n) (DIM x DIM en l occurence...) sous VBA via une DLL codee en C++.
Mes problemes sont les suivants: 1/ je suis oblige de rentrer la dimension de la matrice manuellement dans la DLL (?!! c est nul) => Cf. ligne1 je pense pouvoir recuperer la dimension du tableau par un safearrayget... mais je ne sais pas comment dimensionner un tableau avec des indices dynamiques... 2/ je suis oblige de faire une boucle pour construire un tableau 2 dimensions.... Cf. Ligne 44/52
Par contre l algorythme d inversion est tres puissant (LU decomposition trouvee sur internet). Voila, vos commentaires sur ce code sont les bienvenus! A+
Alex
Code :
#define DIM 38
long _stdcall MatriceInv(LPSAFEARRAY FAR *ArrayData1, LPSAFEARRAY FAR *ArrayData2)
{
// n est le rang de la matrice ArrayDAta1 et aussi de ArrayData2 !
// renvoie 1 si inversible, 0 sinon
// ArrayData1 est la matrice a inverser, ArrayData est le resultat
Marsh Posté le 16-12-2005 à 11:48:03
Bonjour tout le monde!
Voici mon premier code, alors soyez un peu indulgent. Je poste ce petit bout de code car je n ai pas trouve l equivalent sur ce forum mais aussi car j ai besoin d aide pour l ameliorer...
Ce code permet d inverser une matrice (n x n) (DIM x DIM en l occurence...) sous VBA via une DLL codee en C++.
Mes problemes sont les suivants:
1/ je suis oblige de rentrer la dimension de la matrice manuellement dans la DLL (?!! c est nul) => Cf. ligne1
je pense pouvoir recuperer la dimension du tableau par un safearrayget... mais je ne sais pas comment dimensionner un tableau avec des indices dynamiques...
2/ je suis oblige de faire une boucle pour construire un tableau 2 dimensions.... Cf. Ligne 44/52
Par contre l algorythme d inversion est tres puissant (LU decomposition trouvee sur internet).
Voila, vos commentaires sur ce code sont les bienvenus!
A+
Alex
Appel en VBA: