IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

matrice de corrélation sous VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut matrice de corrélation sous VBA Excel
    Salut toujour pour mon dossier pour la fac

    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    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 d'avence
    à bientot

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonsoir,

    merci de nous préciser la ligne concerné par l'erreur !

    où sont déclarés les variables :
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    L'erreur se trouve sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VStDev(i) = Application.StDev(Sheets("Transit").Cells(2, i), Sheets("Transit").Cells(NbreRend + 1, i))
    pour le NbreTitres, NbreTitres le prof nous l'a donner comme sa

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ReDim VStDev(NbreTitres, NbreTitres)
    .....
    
     VStDev(i) = Application.StDev(Sheets("Transit").Cells(2, i), Sheets("Transit").Cells(NbreRend + 1, 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))
           ....
    tu nous expliques ce qu'est ce tableau ?
    Il est finalement à combien de dimensions ?
    Et initialisées (les dimensions) à quoi (puisque Nbtitres n'est calculé que plus loin ...)?

    Bref : tu traites avec un tableau de 0 colonnes sur 0 lignes !!!!, déjà, à la base ... (sans préjudice de ce qu'ensuite, en plus, tu le considères comme un tableau à une seule dimension !!!...)

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    c'est une matrice aléatoire 4*4

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Aléatoire ?
    Non (relis-moi attentivement) il a tout sauf de l'aléatoire, dès sa création ! (0 lignes et 0 colonnes...)... et lis le reste également...

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Enfaite c'est un des modules de mon Project qui au départ crée une matrice aléatoire ensuite il fait la moyenne la variance et ma troisième procédure est sensée me donné la matrice de corrélation de la premier matrice aléatoire

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    "censée" ?
    Peut-être...
    1) Tu as déjà essayé de remplir les tiroirs d'une armoire sans tiroirs ?
    2) si ton armoire possède x colonnes de x tiroirs, il te faut dire dans quel tiroir tu mets quelquechose et tu le fais comme aux mots-croisés, en donnant le numéro de colonne et celui de rangée.
    C'est si compliqué ?

    EDIT : tiens... juste avant la ligne disant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VStDev(i) = Application.StDev(Sheets("Transit").Cells(2, i), Sheets("Transit").Cells(NbreRend + 1, i))
    utilise une msgbox et Ubound pour voir combien de "tiroirs" sont disponibles dans ton tableau ... (aucun...)

  9. #9
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    D5:G8

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    gné ?

  11. #11
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    c'est dans ces cellules la que ma matrice est générée , ensuite ma matrice de corrélation peut se mètre n’importe ou

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Veux-tu bien écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "ton armoire VStDev possède " & UBound(VStDev, 1) & " tiroirs par " & UBound(VStDev, 2) & " tiroirs"
    Juste avant la ligne de code que je t'ai déjà indiquée plus haut et nous dire ce qui s'affiche, s'il te plait ?

Discussions similaires

  1. passage de parametre sous VBA excel
    Par raka200 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/12/2007, 11h07
  2. transformé cellule sous vba excel
    Par axamen dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2007, 15h03
  3. [VBA-E] Comment créer un tableau sous vba excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2007, 09h52
  4. Arc de cercle sous VBA excel?
    Par fredieuric dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/11/2006, 13h58
  5. ptit probleme combobox sous vba/excel
    Par bandito dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2006, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo