Salut les experts !
Si je m'adresse à vous aujourd'hui c'est parce que j'ai un petit soucis avec une application VBA/Excel. Il se trouve que j'ai été admis dans une formation ou l'on débute cette année l'utilisation de VBA, et malheureusement je crains d'avoir quelques petites lacunes. Par ailleurs j'ai cherché sur la toile, mais je n'ai malheureusement rien trouvé pouvant m'aider, je crains que mon soucis ne soit un peu trop spécifique ( mais si vous avez un tuto, n'hésitez surtout pas, j'en serais très heureux ).
Attaquons les choses sérieuses !
J'ai donc cette bases de données ( ex3), avec laquelle je dois obtenir une matrice. Le problème c'est que je ne suis pas bien sûr de comprendre le système de boucles et de dimensions.
Je me mets donc dans mon développeur :
Maintenant je donne leur dimensions aux matrices qui vont me servir plus tard ( en l'occurrence ma matrice vide cov, ma matrice vide R qui me servira à stocker les vecteurs les uns après les autres, et ma matrice E qui sera la matrice des moyennes ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function fnCorr(prob As Variant, val As Variant) As Variant Dim stDev() As Variant 'variant utilisé pour les écart-types (vecteur colonne) Dim r() As Variant 'variant utilisé pour stocker les valeurs d'une colonne de val Dim cov() As Variant 'variant utilisé pour "contenir" les covariances Dim corr() As Variant 'variant utilisé pour "contenir" les corrélations Dim L As Integer 'nombre de lignes de la matrice val Dim C As Integer 'nombre de colonnes de la matrice cov (= nombre de séries) Dim i As Integer 'indice de la ligne utilisée dans la boucle For Next Dim j As Integer 'indice de la colonne utilisée Dim k As Integer 'indice C=Ubound ( val,1) je calcule donc le nombre de lignes de ma matrices val, dans la dimension des lignes à savoir la dimension 1. L=Ubound ( val,2) Je fais le calcul du nombre de colonnes en me plaçant dans la dimension 2.
Bon là déjà ça coince, pourquoi cov a C lignes et C colonnes ? Parce que si la matrice de départ possède C lignes et L col, alors la matrice de cov devrait être (C,L) na ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Redim cov (C,C)
Là c'est logique, R étant un vecteur, je fixe seulement la dimension 1 à L lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Redim R (L,1)
De même c'est un vecteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Redim E (C,1)
Maintenant la boucle
Si je comprends bien le paramètre i, qui représente les nombres de lignes, peut aller de 1 ligne à L lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part For i = 1 to L
De même mais pour les colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part For j= 1 to C
Alors là je suis dans le brouillard. Ca veut dire que j'ai R un vecteur à i lignes ? sachant qu'il va balayer ma matrice val qui a i lignes et j colonnes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part R(i,1)=val(i,j)
Maintenant je m'occupe de la covariance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Next i E(j,1)= fnEsp ( prob, r )
Et là je comprends pas du tout, pourquoi utiliser un paramètre k ? Pourquoi ne pas reprendre i et j en les faisant varier de 1 à C ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For j= 1 to C For k= 1 to C Cov (j,k) =0
En vous remerciant d'avancer pour le temps que vous me consacrerez.
Partager