Calcul Matrice de corrélation sous VBA Excel

cs_tandia Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 juin 2008 - 25 juin 2008 à 11:36
cs_tandia Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 juin 2008 - 26 juin 2008 à 07:59
Salut,

J'ai des problèmes pour calculer une matrice de corrélation sous VBA Excel à chaque fois que j'execute il me dit qu'il y a un indice hors selection.

Pourriez vous me verifier le code:
Private Sub CommandButton5_Click()
Dim VStDev() As Variant
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim m As Integer
Dim o As Integer
Dim p As Integer
ReDim VStDev(NbreTitres, NbreTitres)


Sheets("Covariance").Cells.ClearContents
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
k = k + 1
End If
Next i


NbreTitres = k
NbreCorr = NbreTitres * (NbreTitres - 1) / 2
For j = 1 To NbreTitres
Sheets("Covariance").Cells(1 + j, 1) = Sheets("Transit").Cells(1, j).Value
Sheets("Covariance").Cells(1, 1 + j) = Sheets("Transit").Cells(1, j).Value
Next j
NbreRend = Sheets("Transit").Range("A1").End(xlDown).Row - 1


For i = 1 To NbreTitres
    VStDev(i) = Application.StDev(Sheets("Transit").Cells(2, i), Sheets("Transit").Cells(NbreRend + 1, i))
    For o = 1 To i
        Sheets("Covariance").Cells(1 + i, 1 + o) = Application.Covar(Sheets("Transit").Cells(2, i + 1), Sheets("Transit").Cells(NbreRend + 1, i + 1), Sheets("Transit").Range(Cells(2, o + 1), Cells(NbreRend + 1, o + 1))) / (VStDev(i) * VStDev(o))
        Sheets("Covariance").Cells(1 + o, 1 + i) = Sheets("Covariance").Cells(1 + o, 1 + i)
    Next o
Next i




End Sub


Merci à bientot

2 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 juin 2008 à 15:06
Salut,

(mail lu à l'instant)

Sur quelle ligne as-tu cette erreur ?

@++

le mystérieux chevalier,"Provençal, le gaulois"
0
cs_tandia Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 juin 2008
26 juin 2008 à 07:59
Salut,

L'erreur se trouve sur cette ligne:

VStDev(i) = Application.StDev(Sheets("Transit").Cells(2, i), Sheets("Transit").Cells(NbreRend + 1, i))

Merci beaucoup 

A bientôt
0
Rejoignez-nous