cs_djebenz
Messages postés2Date d'inscriptiondimanche 10 mai 2009StatutMembreDernière intervention13 mai 2009
-
13 mai 2009 à 12:21
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
13 mai 2009 à 12:45
Bonjour, je suis débutant en programmation et mon plus gros problème concerne surtout les codes VBA.
J'ai programmé une application qui devrait effectué la chose suivant :
- maximiser une cellule contenant une formule excel du type "=LN(E4)-D4^2/E4"
- cette cellule devra être maximiser selon 3 variables
- sous la contrainte=>la somme des 3 variables devra être égale à 1
Pour cela j'utilise le Solver. Mon problème c'est que je dois répéter cette opération de la ligne 4 à la ligne 161(Un processus donc très long à faire à la main).
Par conséquent, à l'aide du "macro recorder" j'ai programmé la chose suivante :
Sub Macro3()
For i = 4 To 161
SolverReset
SolverOk SetCell:=Cells(i, 6), MaxMinVal:=1, ValueOf:="0", ByChange:="Cells(i,7):Cells(i,9)"
' par ByChange:="Cells(i,7):Cells(i,9)" je veux faire varier ByChange:="$G$4:$I$4"
SolverAdd CellRef:=Cells(i, 10), Relation:=2, FormulaText:="1"
' par CellRef:=Cells(i, 10) je veux faire varier "$J$6"
SolverOk SetCell:=Cells(i, 6), MaxMinVal:=1, ValueOf:="0", ByChange:="Cells(i,7):Cells(i,9)"
'par ByChange:="Cells(i,7):Cells(i,9)" je veux faire varier ByChange:="$G$6:$I$6"
SolverSolve userfinish:=True
Next i
End Sub
Le problème c'est que la boucle tourne dans le vide sans faire tourner le solver. Je me doute bien que mon problème reside dans mes notation telle que ByChange:="Cells(i,7):Cells(i,9)" puisque lorsque cette notation est remplacé par "$G$6:$I$6" ça marche mais je connais pas le langage.
Est-ce que quelqu'un pourrait m'aider ? merci
PS:je ne suis pas sur d'être dans le thème bon, veillez m'en excusez si c'est le cas.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 mai 2009 à 12:45
Salut
En effet, c'est illisible.
Peux-tu recommencer en n'utilisant la zone de saisie "moderne" : clique sur le message "Si vous n'arrivez pas à saisie ..." situé en dessous du bouton "Ajouter"
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)