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 :

La boucle for.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut La boucle for.
    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 :

    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.
    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 ).
    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 ?

    Là c'est logique, R étant un vecteur, je fixe seulement la dimension 1 à L lignes.
    De même c'est un vecteur.

    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
    De même mais pour les colonnes.
    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
    1
    2
    Next i
    E(j,1)= fnEsp ( prob, r )
    Maintenant je m'occupe de la covariance.
    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
    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 ?

    En vous remerciant d'avancer pour le temps que vous me consacrerez.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonjour,

    On peut supposer que c'est OK pour les deux premiers exercices.

    Pour nous les études sont un peu lointaines, mais il me semble me souvenir qu'une matrice de covariance est une matrice carrée symétrique, elle caractérise les interactions (linéaires) entre des variables aléatoires.

    Peux tu nous rappeler da définition de la matrice de covariance?

    Merci
    PPz

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    La matrice de covariance est en fait un regroupement de vecteur qui va nous permettre d'étudier la dispersion d'une série. On obtient alors une matrice à i lignes et j colonnes, et dont la diagonale est composée des variances. Tout autour de cette diagonales se trouvent les covariances qui nous donnent des informations sur une association de deux variables.

    Mais dans ce cas précis ce n'est pas vraiment ce qui m'embête, je maitrise l'application mathématique de la covariance. Ce qui m'embête plus, c'est d'être capable de le coder sous VBA. J'ai particulièrement un problème sur l'utilisation du paramètre k, qui pour moi ne sert à rien. Je m'en serais tenu à i et j...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonjour,

    Excuses moi d'être un peu lourd, mais ton mail est un peu incohérent.
    Une matrice rectangulaire (i x j) n'a pas vraiment de diagonale. Je persiste à penser que ta matrice doit être carrée, comme écrit dans le code.

    Si tu souhaites être aidé il faut nous donner la formule mathématique telle que présentée durant ta formation, une photocopie peut suffire.

    PPz

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    En fait je crois qu'il y a un petit quiproquo. Comme je ne comprends pas parfaitement le code, j'ai du mal m'exprimer, auquel cas j'en suis désolé. Bien entendu la matrice des cov est carré, mais je ne vois pas pourquoi elle ne te pas être carré si c'est une matrice i,j dans le sens ou i va de 1 to L et j de 1 to C.

    Pour la formule ça ferait :

    cov (j,k)= 0
    cov (j,k)= cov(j,k) + prob (i,j)*(val(i,j)-E(j,1))*(val(i,k)-E(k,1))

    Mais ce qui me chiffonne, c'est cette histoire de k. Je vois absolument pas pourquoi utiliser un k, alors qu'on a déjà i et j qui à priori ont les tailles adaptées.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Peux tu me préciser la version d'Excel que vous utilisez durant cette formation.
    Le code ne fonctionne pas sur mes machines :
    - PC avec Excel 2003
    - Mac avec Excel 2004.

    PPz

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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