-
Solver en VBA
Bonjour à tous,
Je suis en train de coder un programme en VBA pour optimiser un portefeuille d'actions financières. Jusque-là tout va bien.
Mon problème se situe au niveau du solveur. En effet, il ne prend en compte que des valeurs avec des formules. Malheureusement pour moi, j'utilise des formules sous vba et non pas directement avec Excel, ce qui a pour conséquence de remplir les cellules avec le résultats du code VBA et non pas les formules elles-mêmes.
Vous me direz sûrement de mettre les formules sous Excel mais si je n'ai pas le même nombre de données (par exemple si je rajoute une action à mon portefeuille ou si je veux regarder les variations sur une plus longue période), il faudrait alors modifier ces formules, voire même les changer les cellules où se trouvent ces formules.
Je suis pour l'instant dans l'impasse face à cette situation (qui je l'espère est claire pour vous). N'hésitez pas à me demander si vous voulez plus d'informations ou si je n'ai pas été clair.
Merci,
Juniclem
-
Bonjour,
S'il n'a aucune formule comment veux-tu qu'il évalue une solution ? C'est pareil que si tu ne lui donnes pas de cellule variable, il n'a plus de boulot...
Il lui en faut au moins une : celle de la cible à atteindre.
eric
-
Bonsoir Eric,
Tout d'abord merci de votre réponse.
J'ai bien compris que le solveur a besoin de formules, mais du coup mon problème est de savoir comment (si c'est possible) je peux remplir mes cellules tout en utilisant VBA pour pouvoir ensuite appliquer le solveur sur mes données.
Clément
-
Bonjour,
Je pense que le Solver fonctionne principalement par itération, tu peux donc te créer une fonction en VBA pour remplacer le Solver.
Je n'ai aucune connaissance en financier mais si tu donnes un exemple de ce que tu désires avec les valeurs de départ et la ou les valeurs à atteindre, il y aura sûrement ici quelqu'un qui aura ces connaissances pour t'aider à créer cette fonction !
-
Pourquoi pas essayer cette méthode mais dans ce cas-là il faut que j'arrive à parcourir un tableau à n (nombre d'actions de mon portefeuilles) dimensions.
Pour être plus précis je dois calculer la rentabilité et la volatilité de mon portefeuille (c'est pas la le plus dur) pour chaque combinaison possible (c'est là que ça se complique).
Par exemple avec 3 actions possibles :
Portefeuille 1 : Action A 100%, Action B 0%, Action C 0%
Portefeuille 2 : Action A 99%, Action B 1%, Action C 0%
Portefeuille 3 : Action A 98%, Action B 1%, Action C 1%
....
J'imagine qu'imbriquer des boucles for est la solution mais cela me parait très lourd comme code si j'arrive à une 10-15 actions possibles. De plus je ne saurai pas trop comment faire pour imbriquer n boucles for sachant que n peut changer mais que mon code VBA lui ne doit pas changer.
Si vous avez une idée je suis preneur car mes compétences de programmation ne sont pas aussi poussé que çà !
Merci de votre aide
-
Bonjour,
Le Solver est un programme d'optimisation sous contraintes, basé sur la programmation linéaire. Et tu dois définir chaque contrainte sous la forme d'une inéquation. À ce que je sache (si cela n'a pas changé ces dernières années), l'algorithme est dérivé du traditionnel algorithme du simplexe. Mais si tu n'as pas de notion de programmation linéaire, commence par cela. Une fois que tu auras les notions requises, tu pourras établir ton modèle pour utiliser le Solver.
https://fr.wikipedia.org/wiki/Algorithme_du_simplexe
https://www.solver.com/