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.

Envoyé par
julie_broca17
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
Range("A1").formula = "=sum("A2:A6")"
Fonction Excel en français dans un Excel français
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:
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:
Dim Covariance(10,10) as single
et au besoin, tu redimensionne ton tableau:
Redim Covariance(50, 50 ) as single
Si tu as déjà des données que tu veux conserver dans ton tableau:
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
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é
Partager