Matrice Variance Covariance via VBA
Bonjour à tous,
Je tente de faire une optimisation, et pour cela j'ai besoin d'une matrice variance covariance...
normalement elle se présente ainsi :
http://fr.wikipedia.org/wiki/Covariance
Pas très difficile me diriez vous... la je vous le présente pour 12 valeurs dans le fichier montré dessous... cependant j'en ai près de 450...
et donc je ne maitrise pas assez vba pour pouvoir créer une macro qui serait capable de l'automatiser... je recherche donc de l'aide sur ce forum...
Il y a aura en tète de chaque colonne le nom de la valeur cela commencera à la colonne A... et cela fini à ACH...
et sous elle les différents cours... 1300... Environ… !
De plus je me suis rendu compte que des fois il y avait des trous dans les cours... mais je ne veux pas que VBA le remplace par 0... Est ce possible ?
merci
Pour l'instant mon code ressemble a ca :
Sub varcov()
'
' varcov Macro
Range("A1").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur1)"
Range("A2").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur2)"
Range("A3").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur3)"
Range("A4").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur4)"
Range("A5").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur5)"
Range("A6").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur6)"
Range("A7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur7)"
Range("A8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur8)"
Range("A9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur9)"
Range("A10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur10)"
Range("A11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur11)"
Range("A12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur1,valeur12)"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur2)"
Range("B3").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur3)"
Range("B4").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur4)"
Range("B5").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur5)"
Range("B6").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur6)"
Range("B7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur7)"
Range("B8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur8)"
Range("B9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur9)"
Range("B10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur10)"
Range("B11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur11)"
Range("B12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur2,valeur12)"
Range("C3").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur3)"
Range("C4").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur4)"
Range("C5").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur5)"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur6)"
Range("C7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur7)"
Range("C8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur8)"
Range("C9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur9)"
Range("C10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur10)"
Range("C11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur11)"
Range("C12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur3,valeur12)"
Range("D4").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur4)"
Range("D5").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur5)"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur6)"
Range("D7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur7)"
Range("D8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur8)"
Range("D9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur9)"
Range("D10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur10)"
Range("D11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur11)"
Range("D12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur4,valeur12)"
Range("E5").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur5)"
Range("E6").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur6)"
Range("E7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur7)"
Range("E8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur8)"
Range("E9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur9)"
Range("E10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur10)"
Range("E11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur11)"
Range("E12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur5,valeur12)"
Range("F6").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur6)"
Range("F7").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur7)"
Range("F8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur8)"
Range("F9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur9)"
Range("F10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur10)"
Range("F11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur11)"
Range("F12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur6,valeur12)"
Range("G7").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur7)"
Range("G8").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur7,valeur8)"
Range("G9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur7,valeur9)"
Range("G10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur7,valeur10)"
Range("G11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur7,valeur11)"
Range("G12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur7,valeur12)"
Range("H8").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur8)"
Range("H9").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur8,valeur9)"
Range("H10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur8,valeur10)"
Range("H11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur8,valeur11)"
Range("H12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur8,valeur12)"
Range("I9").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur9)"
Range("I10").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur9,valeur10)"
Range("I11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur9,valeur11)"
Range("I12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur9,valeur12)"
Range("J10").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur10)"
Range("J11").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur10,valeur11)"
Range("J12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur10,valeur12)"
Range("K11").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur11)"
Range("K12").Select
ActiveCell.FormulaR1C1 = "=COVAR(valeur11,valeur12)"
Range("L12").Select
ActiveCell.FormulaR1C1 = "=VAR(valeur12,valeur12)"
End Sub
Mais je ne m'imagine pas avec les 450 valeurs...
Il y a aura en tète de chaque colonne le nom de la valeur cela commencera à la colonne A... et cela fini à ACH...
et sous elle les différents cours... 1300...
De plus je me suis rendu compte que des fois il y avait des trous dans les cours... mais je ne veux pas que VBA le remplace par 0... Est ce possible ?
merci
Bonjour 1ma9,
Très intéressant la covariance et la corrélation .
Bon je suis allé faire un tour sur le lien rapido : j'ai tout juste compris que la corrélation est une covariance linéaire, ben pour le reste...
Je suppose que ton PB est sur le traitement des données staistiques et non sur les calculs eux-mêmes... me trompe-je ?
Alors, si nous pouvions avoir un extrait de la "bête" enfin du fichier pour que puissions examiner ses entrailles et trouver une solution à ton PB.
Au plaisir.
Captain SOLO