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 :

Inverser une matrice 120*120 excel/vb


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Inverser une matrice 120*120 excel/vb
    Bonjour à toutes et à tous,
    voici mon problème:
    Je dois faire des calculs sous EXCEL qui nécessite l'inversion d'une matrice de taille 120 par 120. Cependant la fonction pré enregistré d'EXCEL INVERSEMAT est limité à une matrice de taille 50*50. Je me suis donc mis à l'écriture d'une fonction sur vba en pensant que l'algorithme d'inversion de Gauss serait suffisant pour inverser une grande matrice. Cependant le résultat est le même, je suis bloqué à 50*50.
    Je me demande juste si il est possible ou si quelqu'un sait, si c'est possible d'inverser une grande matrice.
    Parce que si je trouve pas une solution sous excel il va falloir que je crée une dll sous scilab afin de faire mon calcul.
    Merci beaucoup de l'aide que vous pouvez m'apporter.
    Amicalement
    Grego1re

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Ne peux-tu pas charger ta matrice (plage de cellule) dans une variable tableau à 2 dimensions, faire les changements voulus en écrivant par code cette première variable dans une deuxième par maniement des index et réinjecter le résultat à l'endroit voulu. Ce serait rapide en plus.

    vois si besoin ce tuto et le lien vers Silkyraod

    Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel


    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    re,
    Merci de votre réponse rapide, mais je me suis mal exprimé je cherche à inverser ma matrice c'est a dire trouver la matrice A' inverse de A tel que A*A' est égal à la matrice identité. le maniement d'index ne suffit pas.
    Cordialement
    Grego1re

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Peut être fais une recherche sur l'algorithme de Greville.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    re,

    Bon, je te livre ce que j'en ai trouvé, pas ce que je connais (pas justement ). Une bonne piste serait de suivre la méthode du pivot de Gauss...

    Sinon, vois ici si tu trouves des choses..

    http://www.developpez.net/forums/d92...trice-inverse/

    http://www.developpez.net/forums/d27...eme-pivot-nul/

    http://jmblanc.developpez.com/algori...?page=sommaire

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci de vos réponses,
    je sais que c'est un problème assez pointu, mais quelle idée de vouloir inverser d'aussi grande matrice!!!!
    merci quand même pour vos réponses!
    je vais essayer de le faire avec l'algorithme de Cholesky, et peut être aussi de greville (mais je n'en ai jamais entendu parler en cours, et je trouve cela bizarre) comme il est moins couteux il va peut être fonctionner!
    je mettrais sur le forum si j'ai trouvé la solution miracle.
    si quelqu'un a d'autre solution, n'hésitez pas!
    cdt
    Grego1re

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Re,
    j'ai un peu avancé dans le problème posé.
    Tout d'abord, la version excel 2007 a corrigé ce problème, en effet la fonction inversemat() fonctionne avec des matrices de grandes tailles!
    il existe cependant un add on qui permet entre autre d'inverser une matrice allant jusqu'a 256*256
    vous pouvez la trouver à cette adresse

    Morefunc - Free software downloads and software reviews - CNET Download.com

    Cependant, sur mon pc, la fonction inversemat.ext() ( c'est celle qui fait du grand format) ne fonctionne toujours pas.
    Je me pose donc la question suivante:
    Est ce que c'est possible qu'une configuration de mon pc, d'excel ou de vb puisse être à l'origine de cette limitation à des matrices de 50*50!
    je ne sais pas trop, mais est ce qu'il existe des façons de "débrider" excel, ou quelque chose comme ça!

    Merci encore pour votre implication.
    Grégo1re

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    As tu essayé la formule d'inversion avec la commatrice ? http://fr.wikipedia.org/wiki/Comatrice.
    Elle se base sur le calcul de determinant de matrices extraites de ta matrice.
    Cette formule est utilisé pour inverser numériquement des "petites matrices" (120*120 c'est dans les bornes).

    Cordialement,

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/09/2012, 15h22
  2. Réponses: 4
    Dernier message: 22/11/2011, 12h35
  3. [Débutant] Problème pour inverser une matrice
    Par alexov dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/06/2011, 17h53
  4. comment inverser une matrice (array)
    Par bonomsoleil dans le forum C
    Réponses: 7
    Dernier message: 10/11/2006, 20h53
  5. Comment inverser une matrice H(2,2) ?
    Par fafa624 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 10h23

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