Bonjour à tous,
Je tente de faire une optimisation, et pour cela j'ai besoin d'une matrice variance covariance...
normallement elle se présente ainsi :
Matrice de variance-covariance - Wikipédia
Pas très difficile me diriez vous... la je vous le présente pour 12 valeurs dans le fichier joint... 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...
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...
merci à vous !!!
Je tente de faire une optimisation, et pour cela j'ai besoin d'une matrice variance covariance...
normallement elle se présente ainsi :
Matrice de variance-covariance - Wikipédia
Pas très difficile me diriez vous... la je vous le présente pour 12 valeurs dans le fichier joint... 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...
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...
merci à vous !!!
Pièces jointes
Dernière édition: