Produit matriciel VBA Excel
Résolu
student90
Messages postés
21
Statut
Membre
-
student90 Messages postés 21 Statut Membre -
student90 Messages postés 21 Statut Membre -
Hello Forum,
J'ai essayé de faire deux produits matriciels dans une formule mais je bloque à deux endroits ... Mon but est d'écrire un code VBA où les cellules ne sont pas fixe ->utilisation du Count. J'y suis presque arrivé mais pas pour la matrice en feuille4 (Dimmatrice).
On pourrait également simplifier les codes en utilisant NbTitres qui est variable. Les matrices Transposéestitres, TransposéePondérations et Pondération sont de type NbTitres *1. Dimmatrice est de type NbTitres*NbTitres --> matrice carrée.
Vous l'aurez compris, certaines données sont en feuille 1 et d'autres en feuille 4
Si dessous, vous trouverez mon avancée dans le code.
[code=vb]Sub matrice()
NbTitres = Application.WorksheetFunction.CountA(Feuil1.Range("$A:$A")) - 1
'Problème 1: Insertion des titres en dessus de la matrice
Transposéetitres = Application.WorksheetFunction.Transpose(Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row))
Sheets("feuil4").Cells(Cells(2, 2), Cells2, 5).Value) = Transposéetitres ' je ne dois pas avoir 5 mais NbTitres
'Problème 2: Calcul produit matriciel
TransposéePondérations = Application.WorksheetFunction.Transpose(Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row))
Pondération = (Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row))
Dimmatrice =(Sheets("feuil4").(Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row)),(Sheets("feuil4").Range(.Cells(3, NbTitres)), .Cells(3,.Cells(3,Rows.Count).End(xlUp).Row))) 'ne marche pas... problème se situe à ce niveau (je pense)
Sheets("Feuil1").Cells(2, 7).Value = Sqr(Application.WorksheetFunction.MMult(Application.WorksheetFunction.MMult(TransposéePondérations, Dimmatrice), Pondération)) 'calcul de la racine de 2 produit mat
End Sub [/code]
Lien pour le fichier: https://www.cjoint.com/?3CDlsmUngWl
Merci d'avance pour vos suggestions !
J'ai essayé de faire deux produits matriciels dans une formule mais je bloque à deux endroits ... Mon but est d'écrire un code VBA où les cellules ne sont pas fixe ->utilisation du Count. J'y suis presque arrivé mais pas pour la matrice en feuille4 (Dimmatrice).
On pourrait également simplifier les codes en utilisant NbTitres qui est variable. Les matrices Transposéestitres, TransposéePondérations et Pondération sont de type NbTitres *1. Dimmatrice est de type NbTitres*NbTitres --> matrice carrée.
Vous l'aurez compris, certaines données sont en feuille 1 et d'autres en feuille 4
Si dessous, vous trouverez mon avancée dans le code.
[code=vb]Sub matrice()
NbTitres = Application.WorksheetFunction.CountA(Feuil1.Range("$A:$A")) - 1
'Problème 1: Insertion des titres en dessus de la matrice
Transposéetitres = Application.WorksheetFunction.Transpose(Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row))
Sheets("feuil4").Cells(Cells(2, 2), Cells2, 5).Value) = Transposéetitres ' je ne dois pas avoir 5 mais NbTitres
'Problème 2: Calcul produit matriciel
TransposéePondérations = Application.WorksheetFunction.Transpose(Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row))
Pondération = (Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row))
Dimmatrice =(Sheets("feuil4").(Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row)),(Sheets("feuil4").Range(.Cells(3, NbTitres)), .Cells(3,.Cells(3,Rows.Count).End(xlUp).Row))) 'ne marche pas... problème se situe à ce niveau (je pense)
Sheets("Feuil1").Cells(2, 7).Value = Sqr(Application.WorksheetFunction.MMult(Application.WorksheetFunction.MMult(TransposéePondérations, Dimmatrice), Pondération)) 'calcul de la racine de 2 produit mat
End Sub [/code]
Lien pour le fichier: https://www.cjoint.com/?3CDlsmUngWl
Merci d'avance pour vos suggestions !
A voir également:
- Produit matriciel excel
- Clé de produit windows 10 gratuit - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Bonjour,
pour te répondre il faudrait déjà avoir un ti début de piste.
Le classeur que tu poste ne contient...... RIEN ou presque.
Poste le classeur .xlsm avec ta/tes macro et des données un peu plus explicite ça aidera déjà.
En plus met le résultat souhaiter sur une autre feuille (même en manuel)
A+
pour te répondre il faudrait déjà avoir un ti début de piste.
Le classeur que tu poste ne contient...... RIEN ou presque.
Poste le classeur .xlsm avec ta/tes macro et des données un peu plus explicite ça aidera déjà.
En plus met le résultat souhaiter sur une autre feuille (même en manuel)
A+
Le dossier se trouve sur ce lien : https://www.cjoint.com/?3CEnSZZ7iuy
Merci pour ton aide !