Matrice covariance à l'aide de vba... !

  • Initiateur de la discussion Initiateur de la discussion 1ma9
  • 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 !

1ma9

XLDnaute Nouveau
Bonjour à tous,

je viens vous demander un petit coup de pouce...

J'ai plus de 500 valeurs à traiter... et donc une matrice 500*500

en fait cette matrice est une matrice de covariance...

pour 4 valeurs ce serait :

cov (1.1) cov (2.1) cov (3.1) cov (4.1)
cov (1.2) cov (2.2) cov (3.2) cov (4.2)
cov (1.3) cov (2.3) cov (3.3) cov (4.3)
cov (1.4) cov (2.4) cov (3.4) cov (4.4)

1 = les cours du titre 1
2 = les cours du titre 2
3= les cours du titre 3
4= le cours du titre 4

cependant je ne me vois pas rentrer les 500*500 formules dans excel... j'aimerai passer par vba... mais je ne dispose pas d'un bagage assez élevé pour le réaliser seul... y'en a t'il qui pourrait me donner une idee de code ?

merci a vous internautes... !
 

Pièces jointes

Dernière édition:
Re : Matrice covariance à l'aide de vba... !

Merci c'est gentil d'y préter attention ... ! la formul dans excel c'est = covariance (cours titre1; cours titre 2)

je t'envoie un fichier ou je viens de le commencer pour 12 valeurs afin de tester mon optimisation en message privé
 
Re : Matrice covariance à l'aide de vba... !

Re,

Merci pour le fichier, voici la macro :

Code:
Private Sub CommandButton1_Click()
Dim n%, d%, tablo#(), i%, j%
With Sheets("test 12")
  n = Application.Count(.Columns(1)) 'nombre de valeurs étudiées par titre
  d = Application.CountA(.Rows(1)) 'nombre de titres (dimensions du tableau)
  ReDim tablo(d - 1, d - 1)
  For i = 0 To d - 1
    For j = i To d - 1
      tablo(i, j) = Application.Covar(.[A2].Offset(, i).Resize(n), .[A2].Offset(, j).Resize(n))
      tablo(j, i) = tablo(i, j)
    Next
  Next
End With
Rows("2:65536").ClearContents
Range("A2").Resize(d, d) = tablo [COLOR="Red"]'si d > 256 utiliser Excel 2007[/COLOR]
End Sub

Elle se trouve dans le code de Feuil1 (clic droit sur l'onglet et Visualiser le code).

Attention, si le nombre de titres dépasse 256, utiliser Excel 2007 !

Fichier joint.

A+
 

Pièces jointes

Re : Matrice covariance à l'aide de vba... !

Re,

Le calcul est là :

Code:
tablo(i, j) = [COLOR="Red"]Application.Covar(.[A2].Offset(, i).Resize(n), .[A2].Offset(, j).Resize(n))[/COLOR]
tablo(j, i) = tablo(i, j)

L'expression en rouge calcule (la fonction COVAR, c'est en anglais la fonction COVARIANCE) la covariance de la paire de titres repérée par i et j.

La valeur obtenue est entrée dans un tableau VBA (symétrique), qui quand il a été complètement rempli est copié dans la feuille.

Cette manière de faire est beaucoup plus rapide que de remplir les cellules de la feuille une par une 🙂

A+
 
- 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
2
Affichages
725
Réponses
3
Affichages
1 K
S
Réponses
2
Affichages
1 K
C
Réponses
51
Affichages
9 K
C
Réponses
3
Affichages
1 K
C
Retour