Produits de deux matrices - VBA

  • Initiateur de la discussion Initiateur de la discussion mimy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mimy

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Je voudrais faire le produit de deux matrices et coder une fonction sous VBA permettant de le faire. Et mettre un bouton qui affichera la matrice.
J ai pas mal de mal en vba donc je me tourne vers vous...

exemple:
-----A------------D------E-----F
1:__0.06___et ___1_____0.3___0.2
2:__0.02___et ___0.3___1_____0.4
3:__0.12___et ___0.2___0.4___1


Je voudrais obtenir la matrice suivante:
A1*A1*D1___A1*A2*E1___A1*A3*F1
A2*A1*D2___A2*A2*E2___A2*A3*F2
A3*A1*D3___A3*A2*E3___A3*A3*F3


Je vous remercie beaucoup
 
Re : Produits de deux matrices - VBA

Bonsoir,

Désolée de vous déranger encore une fois.

J ai notamment une question.

Je voudrais faire l'inverse de la matrice que l'on obtiend mais toujours 3 lignes après l obtention de la matrice variance-covariance.
Dans un second temps je voudrais afficher à coté de la matrice inverse 2 colonnes après la fin de la matrice inverse, une colonne de 1 (avec le même nombre de lignes que la matrice inverse) et faire le produit matricielle de la matrice inverse avec cette colonne de 1 (résultats 3 lignes après)....

Je comprendrai si vous n avez pas le temps

J ai mis en fichier joint ce que j ai un peu modifié.
 

Pièces jointes

Re : Produits de deux matrices - VBA

Bonjour Mapomme,

Justeun dernier service concernant ce fichier,

Tu vois la matrice de correlation, c est une matrice triangulaire, c est a dire que les colonnes sont égales aux lignes.
Je m explique: premiere ligne=TRANSPOSE(premiere colonne) etc...

Je voudrais savoir si c est possible, à partir de cette matrice triangulaire, faire une sub qui justement transpose les colonnes en lignes afin d'avoir la matrice de correlation entière.

Je te remercie mille fois!
 
Re : Produits de deux matrices - VBA

Bonsoir mimy,

Un essai dans le fichier joint. Devrait fonctionner que la matrice soit triangulaire sup. ou inf.
Code:
Sub test()
   Complete Range("C3:F6"), Range("C9")
   Complete Range("I3:M7"), Range("I9")
End Sub

Sub Complete(Triangle As Range, Dest As Range)
Dim i, j, M1, M2, N
   N = Triangle.Rows.Count
   ReDim M1(1 To N, 1 To N)
   M1 = Triangle.Value
   ReDim M2(1 To N, 1 To N)
   M2 = Application.Transpose(M1)
   For i = 1 To N
      For j = 1 To N
         M1(i, j) = M1(i, j) + M2(i, j)
      Next j
      M1(i, i) = 0 + M2(i, i)
   Next i
   Dest.Resize(N, N).Value = M1
End Sub
 

Pièces jointes

Re : Produits de deux matrices - VBA

(re)Bonsoir,

Un essai dans le fichier joint. Le minimum à indiquer est l'adresse de la première cellule de la matrice triangulaire et l'adresse de la cellule de destination.

Code:
Sub test()
   Complete Range("C3"), Range("C9")
   Complete Range("I3"), Range("I9")
End Sub

Sub Complete(CoinSupGauche As Range, Dest As Range)
Dim i, j, M1, M2, N

   For N = 1 To 1000
      If CoinSupGauche(1, N) = "" Then Exit For
   Next N
   N = N - 1
   For i = 1 To 1000
      If CoinSupGauche(i, 1) = "" Then Exit For
   Next i
   i = i - 1
   If i > N Then N = i
   
   ReDim M1(1 To N, 1 To N)
   M1 = CoinSupGauche.Resize(N, N).Value
   ReDim M2(1 To N, 1 To N)
   M2 = Application.Transpose(M1)
   For i = 1 To N
      For j = 1 To N
         M1(i, j) = M1(i, j) + M2(i, j)
      Next j
      M1(i, i) = 0 + M2(i, i)
   Next i
   Dest.Resize(N, N).Value = M1
End Sub
 

Pièces jointes

Re : Produits de deux matrices - VBA

Bonjour a vous
je voudrais déclarer 2 matrices variables et faire leurs produits. Mais je me bloque depuis 1 semaine. Vous pouvez m'aider svp. Quand je compile ca m'écrit Argument ou appel de procédure incorrect

Dim MonTableau(), MonTableau2() As Double
Sub BouclesForNextImbriquées()
Dim DerniereLigne As Long
DerniereLigne = Range("A1").End(xlDown).Row
Dim NbreDeLignes As Long
NbreDeLignes = DerniereLigne
ReDim MonTableau(NbreDeLignes, 1)
Call AffecterValeursTableau(NbreDeLignes)
End Sub

Sub AffecterValeursTableau(DerniereLigneTableau)
Dim CompteurLigness As Long
Dim CompteurColonness As Long
For CompteurLigness = 1 To DerniereLigneTableau
For CompteurColonness = 1 To 1
MonTableau(CompteurLigness, CompteurColonness) = Cells(CompteurLigness, CompteurColonness)
Next CompteurColonness
Next CompteurLigness
' Range("d1") = MonTableau(2, 1)
End Sub

Sub BouclesForNextImbriqu()
Dim Dernierecol As Long
Dernierecol = Range("C1").End(xlToRight).Column
Dim NbreDecol As Long
NbreDecol = Dernierecol - 2
ReDim MonTableau2(1, NbreDecol)

Call AfecterValeursTableau2(NbreDecol)
End Sub

Sub AfecterValeursTableau2(DernierecolonneTableau)
Dim CompteurLignes As Long
Dim CompteurColonnes As Long
For CompteurLignes = 1 To 1
For CompteurColonnes = 1 To DernierecolonneTableau
MonTableau2(CompteurLignes, CompteurColonnes) = Cells(CompteurLignes, CompteurColonnes)
Next CompteurColonnes
Next CompteurLignes
'Range("d1") = MonTableau(1, 2)
End Sub

Sub produit()
Dim er As Range
Set er = Range("e10:j16")
er = Application.WorksheetFunction.MMult(MonTableau, MonTableau2)

End Sub
 
Re : Produits de deux matrices - VBA

Bonjour.
Excel, ainsi que ses fonctions de WorksheetFunction ne s'accommode pas toujours très bien de données et tableaux d'autres types que Variant (tel que Double) ou Range. Pourquoi ne passez vous pas tout simplement des Range à la MMult ?
Et pourquoi ne mettez vous pas dans votre plage résultante une FormulaArray qui laisserait Excel effectuer le calcul ?
Avez vous vérifié que les nombres de lignes et de colonnes des deux sources et du résultat sont compatibles avec un produit de matrices ?
 
Re : Produits de deux matrices - VBA

Slt Dranreb
En fait c'est un calcul automatique que je veux et a chaque nouvelle opération toute la feuille est effacée c'est pourquoi je ne peux pas y mettre de formules a l'avance dans la feuille. Bon j'ai changé en haut les double en range mais toujours "Argument ou appel de procédure incorrect"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
285
Réponses
3
Affichages
286
Réponses
10
Affichages
583
Réponses
10
Affichages
799
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
387
Retour