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 :

Programmation corrélation/covariance langage VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut Programmation corrélation/covariance langage VBA
    HELP!!!

    J'ai besoin de calculer des covariances entre quatre actions A, B, C et D en langage VBA. Sous excel pas de problème, mais VBA me résiste !! quelqu'un saurait-il comment faire?? Il faut:

    - créer un tableau à 2 dimensions (matrice de valeurs Single), appelé Covariance, en haut du module, c'est-à-dire en-dehors de toute procédure ou fonction, sans préciser la taille (on est pas censés connaître le nombre d’actions dont on souhaite calculer les covariances 2 à 2)

    - Ecrire la fonction "rendTab", à partir d’un objet plage de cellules (les cours des actions) passé en argument, retourne le tableau de valeurs Single donnant les rendements (ici, mensuels)

    - A l’intérieur d’une procédure initCov(), déclarer un tableau de type Variant, dont les éléments seront égaux aux tableaux de rendements calculés par la fonction précédente.
    - En utilisant la fonction VBA Covar, renseigner la matrice Covariance
    - Ecrire la fonction VolBook(i As Integer, j As Integer) qui calculera la volatilité σ d’un portefeuille contenant 50% de l’action n° i et 50% de l’action n° j. La formule utilisée est

    σ^2=0.25×Covariance(i,i)+0.25×Covariance(j,j)+0.5×Covariance(i,j)


    Si ce n'est pas clair n'hésitez pas à me demander des précisions !
    Merci d'avance pour votre aide !!

    Julie

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Il aurait fallu commencer par là …

    Et ne pas oublier l'ami du débutant : le Générateur de macros !



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut
    Bonjour Marc,

    Oui nous avons déjà cherché sur de nombreux forums de l'aide pour créer cette fonction de rentabilité, ce qui nous permettrait de passer à la suite mais nous n'avons pas trouvé la solution et n'arrivons toujours pas à coder la fonction.
    Merci en tout cas d'avoir suggérer le générateur, on ne nous l'a jamais montré !

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Mes cours de statistique et de finance sont bien loins et je n'ai pas la documentation et les formules sous la main. Et puis, je rejoins Marc, dans l'idée que le but de forum (et c'est indiqué dans les Règles, dans la section consacrée aux "Apprentis-programmeurs") n'est pas de faire les travaux, mais d'aider les demandeurs à y parvenir.

    Citation Envoyé par julie_broca17 Voir le message
    HELP!!!

    J'ai besoin de calculer des covariances entre quatre actions A, B, C et D en langage VBA. Sous excel pas de problème, mais VBA me résiste !! quelqu'un saurait-il comment faire??
    Est-ce interdit d'utiliser les fonctions natives d'Excel en VBA ? Parce que (peut-être) toutes les fonctions natives d'Excel peuvent être utilisées par VBA, cela peut être fait de deux façons:

    1) les écrire dans une cellule Excel, pratiquement comme à la mitaine:

    Fonction Excel en anglais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").formula = "=sum("A2:A6")"
    Fonction Excel en français dans un Excel français
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").formula = "=somme("A2:A6")"
    Tu peux facilement l'adapter pour l'écart-type (la racine carrée de la variance, si mes souvenirs sont exacts)

    2) Les utiliser directement dans le code pour fournir une donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Hector as single
    Hector = application.WorksheetFunction.sum(("A2:A6")


    - créer un tableau à 2 dimensions (matrice de valeurs Single), appelé Covariance, en haut du module, c'est-à-dire en-dehors de toute procédure ou fonction, sans préciser la taille (on est pas censés connaître le nombre d’actions dont on souhaite calculer les covariances 2 à 2)
    Tu pourras dire au professeur qu'il déconne. Pour déclarer un tableau en VBA, il faut fournir les dimensions. Nombre de lignes et nombre de colonnes. Au pire, tu mets des chiffres au hasard genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Covariance(10,10) as single
    et au besoin, tu redimensionne ton tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Redim Covariance(50, 50 ) as single
    Si tu as déjà des données que tu veux conserver dans ton tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Redim preserve Covariance(50, 50 ) as single
    En mettant ton instruction DIM en dehors de toute procédure tu rends ton tableau Covariance accessible à toutes les procédures de ton projet. Si tu la mets dans une procédure, elle est inaccessible en dehors de la procédure



    - Ecrire la fonction "rendTab", à partir d’un objet plage de cellules (les cours des actions) passé en argument, retourne le tableau de valeurs Single donnant les rendements (ici, mensuels)
    En supposant que ton programme principal s'appelle rendements() et que tes rendements soient dans la feuille "Rendements" et dans la plage A2:B20
    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
    sub rendements()
         dim plage as range
         set plage = Sheets("Rendements").range("A2:b20")
         '19 lignes et 2 colonnes pour correspondre à A2:b20
         Dim TableauDesRendements (19) as Variant
         TableauDesRendements = rendTab(plage,réponses ) 
         'Suite à compléter
    end sub
     
    Function  rendTab(plage as range) as single
     'Rendu là cela dépend de ce qu'il y a dans ton tableau source
         Dim réponse(1 to 19) 'ou autre chose
         for i = 1 to 19
               réponse(i) = Écrire la formule
         next
         rendtab = réponse
    end function
    Pour le reste, tu verras plus tard. La meilleure chose à faire c'est de découper ton chemin en étapes et d'y aller pas à pas.
    Puis le truc le plus important. Pour afficher l'aide de VBA au sujet d'un mot-clef, tu cliques sur le mot-clef, puis tu appuies sur la touche magique :
    Parce que veux veux pas, l'aide on ne s'en sort jamais, peu importent les connaissances et l'expérienceé

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, les stats c'est loin, très loin .....

    voir avec Application.WorksheetFunction.Covar et Application.WorksheetFunction.Correl ?

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut
    Bonjour Clément,

    Merci beaucoup d'avoir pris le temps pour me détailler la première étape. Ca m'a bien aidé, et j'ai presque fini. Il me reste juste une petite partie mais je la finis cette aprem avec une amie.
    Merci encore !

    Bonne journée, et bonne semaine

    Cdt,
    Julie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Avenir des langages VBA et VBScript
    Par Chatbour dans le forum Discussions diverses
    Réponses: 3
    Dernier message: 17/08/2007, 14h13
  2. programmer une tâche via VBA/Excel
    Par simstef dans le forum Excel
    Réponses: 5
    Dernier message: 07/08/2007, 15h53
  3. langage vba + zone de texte de formulaire
    Par Sebastien_INR59 dans le forum IHM
    Réponses: 11
    Dernier message: 23/05/2006, 18h48
  4. Probleme Langage VBA
    Par nassu dans le forum Access
    Réponses: 21
    Dernier message: 20/05/2006, 09h53
  5. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19

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