[VBA] Utilisation du solver avec des fonctions code en vba???
Utilisation du solver avec des fonctions code en vba??? [VBA] - VB/VBA/VBS - Programmation
MarshPosté le 29-03-2016 à 11:26:39
Bonjour,
Mon groupe de travail et moi devons réaliser un projet coder entièrement sous VBA dans lequel nous devons à partir d une liste de prix d actif, répliquer les rendements d'un Benchmark donne. Par exemple: on reçoit 20 prix hebdomadaire d'actions sur une période de 10 ans(carrefour, Alstom, Areva...), dans une feuille Excel. Ainsi que l’évolution du CAC40 hebdomadaire sur 10 ans. Après avoir calculer le rendement des actifs, nous devons calculer le portefeuille qui répliquera le mieux les rendements du benchmark(CAC40). Nous allouons au départ un pourcentage a chaque actif pour créer le portefeuille, ensuite a l'aide du Solver nous devons maximiser l'alpha du portefeuille ou minimiser la Tracking Error. L'alpha du portefeuille et la Tracking Error, sont des mesures de performance que nous arrivons à coder en VBA et dont les fonctions définiront les cellules cibles ou contraintes .
Notre problème survient au moment de l'optimisation. Nous avons l'impression que le solver ne fonctionne que avec des formules Excel Exemple: SommeProd(A1:A10;B1:B10)^0,5(calcule de Variance) Et non avec notre fonction codé dans un Module. Exemple:
Code :
Function var(v)
b = moy(v)
tamp2 = 0
m = UBound(v)
For z = 1 To m
tamp2 = tamp2 + (v(z) - b) ^ 2
Next z
If m = 1 Then
var = tamp2
Else:
var = tamp2 / (m - 1)
End If
End Function
Lorsqu'on définit la cellule cible (=var(v) ) le solver ne change pas la valeur de la cellule cible comme si il n'y avait pas de lien avec les autres cellules.
Notre question est alors, Est-il possible d'utiliser le solver avec des cellules cibles et contraintes elles mêmes définit par des fonctionnes codes en VBA;et si oui comment? Comment faire un calcul avec des cellules sur une autre feuille Excel?(exemple: on a une feuille "Data1" et une feuille "Data2" et on souhaite faire le calcul, la cellule A1 de "Data2" est égale à la cellule A1 de "Data1" divisé par la cellule A2 de "Data1" )
Merci pour l'attention porte à ce problème, en espérant que vous ayez une solution à cette énigme.
Message édité par icey-ice le 29-03-2016 à 16:57:01
Marsh Posté le 29-03-2016 à 11:26:39
Bonjour,
Mon groupe de travail et moi devons réaliser un projet coder entièrement sous VBA dans lequel nous devons à partir d une liste de prix d actif, répliquer les rendements d'un Benchmark donne.
Par exemple:
on reçoit 20 prix hebdomadaire d'actions sur une période de 10 ans(carrefour, Alstom, Areva...), dans une feuille Excel.
Ainsi que l’évolution du CAC40 hebdomadaire sur 10 ans.
Après avoir calculer le rendement des actifs, nous devons calculer le portefeuille qui répliquera le mieux les rendements du benchmark(CAC40).
Nous allouons au départ un pourcentage a chaque actif pour créer le portefeuille, ensuite a l'aide du Solver nous devons maximiser l'alpha du portefeuille ou minimiser la Tracking Error.
L'alpha du portefeuille et la Tracking Error, sont des mesures de performance que nous arrivons à coder en VBA et dont les fonctions définiront les cellules cibles ou contraintes .
Notre problème survient au moment de l'optimisation. Nous avons l'impression que le solver ne fonctionne que avec des formules Excel
Exemple: SommeProd(A1:A10;B1:B10)^0,5(calcule de Variance)
Et non avec notre fonction codé dans un Module.
Exemple:
Lorsqu'on définit la cellule cible (=var(v) ) le solver ne change pas la valeur de la cellule cible comme si il n'y avait pas de lien avec les autres cellules.
Notre question est alors, Est-il possible d'utiliser le solver avec des cellules cibles et contraintes elles mêmes définit par des fonctionnes codes en VBA;et si oui comment?
Comment faire un calcul avec des cellules sur une autre feuille Excel?(exemple: on a une feuille "Data1" et une feuille "Data2" et on souhaite faire le calcul, la cellule A1 de "Data2" est égale à la cellule A1 de "Data1" divisé par la cellule A2 de "Data1" )
Merci pour l'attention porte à ce problème, en espérant que vous ayez une solution à cette énigme.
Message édité par icey-ice le 29-03-2016 à 16:57:01