Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Erreur avec la fonction MMult

Johan_25

XLDnaute Nouveau
Bonjour à tous,
Pour un problème de mécanique je voudrais résoudre un système d'équation à l'aide d'excel et de manipulation de matrice.

Au moment de multiplier 2 matrices ensemble : VBA me signale cette erreur :
"Erreur d'éxecution '1004': Impossible de lire la proriété MMult de la classe worksheetFunction".

J'ai vu cette erreur sur d'autre forum mais je n'ai jamais réussi à trouver une solution pour mon code : (ne pas regarder la phase de remplissage des tableaux : c'est sans importance)
Si qq'un à la solution

VB:
Sub res_systeme()

Const n As Integer = 2 'le nombre de subdivision du pieu
Dim l_pieu As Double
Dim M_0 As Double
Dim T_0 As Double

l_pieu = 2
M_0 = 0
T_0 = 20


Dim mat_A(1 To n * 4, 1 To n * 4) As Double
Dim C_i() As Double
Dim mat_B(1 To n * 4) As Double
'A.C = B avec C la matrice des constantes Cik inconnues
'C=A^-1.B : Résolution du système

'--------------------------------------------------
'REMPLISSAGE DES MATRICES mat_A et mat_B 
'--------------------------------------------------

C_i = Application.WorksheetFunction.MMult(Application.WorksheetFunction.MInverse(mat_A), mat_B) 'ici mon erreur


End Sub
 
Dernière édition:
Solution
Ah je crois que MatB devrait être dimensionné 1 To 8, 1 To 1, soit 8 lignes d'une colonne pas une ligne de 8 colonnes comme assumé s'il n'y a qu'une dimension.
C'est ce que je fait dans mon module SysEqua, sauf que je peux avoir plusieurs colonnes de valeurs Y différentes pour calculer différents problèmes avec la même matrice inversée.

Dranreb

XLDnaute Barbatruc
Ah je crois que MatB devrait être dimensionné 1 To 8, 1 To 1, soit 8 lignes d'une colonne pas une ligne de 8 colonnes comme assumé s'il n'y a qu'une dimension.
C'est ce que je fait dans mon module SysEqua, sauf que je peux avoir plusieurs colonnes de valeurs Y différentes pour calculer différents problèmes avec la même matrice inversée.
 
Dernière édition:

Johan_25

XLDnaute Nouveau
Je crois que tu as touché au bon endroit !
Effectivement en déclarant ma matrice B tel que (1 to n, 1 to 1) le calcul s'effectue correctement !
J'étais persuadé que de déclarer juste un vecteur tel que dim B (1 to n) était suffisant pour déclarer un vecteur de n lignes et de 1 colonne ... Apparemment non ?

En tout cas mille mercis pour ton temps passé à m'aider et surement à une prochaine fois
Johan
 

Discussions similaires

Réponses
9
Affichages
342
Réponses
11
Affichages
711
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…