VBA automatisation du solveur ne fonctionne pas

Résolu/Fermé
Gregooz - 5 janv. 2019 à 17:54
 Gregooz - 6 janv. 2019 à 14:37
Bonjour,

Je cherche à créer un programme pour automatiser le solveur. Mais mon programme ne fonctionne pas. Il affiche une erreur de nom quand j'attribue une formule à une cellule. Et les contraintes du solveur ne s'applique pas.

Voici le lien du fichier
https://transfernow.net/21d884s0lsdf

ps : les erreurs se trouvent au niveau du calcul de f2

1 réponse

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
5 janv. 2019 à 18:18
bonjour, merci de partager le texte exact du message d'erreur, et d'expliquer sous quelle forme il est affiché. comment faire pour reproduire le problème avec ton fichier?
0
Sheets("Caché").Range("A19").FormulaR1C1 = "F2"
Sheets("Caché").Range("A20").FormulaR1C1 = "n*"
Sheets("Caché").Range("A21").FormulaR1C1 = "K*(n*)"
Sheets("Caché").Range("A22").FormulaR1C1 = "T"
Sheets("Caché").Range("A23").FormulaR1C1 = "Variable contrainte 1"
Sheets("Caché").Range("A24").FormulaR1C1 = "Variable contrainte 2"
'Sheets("Caché").Range("B19").FormulaR1C1 = f2
Sheets("Caché").Range("B20").FormulaR1C1 = netoile
Sheets("Caché").Range("B21").FormulaR1C1 = k
Sheets("Caché").Range("B22").FormulaR1C1 = t
'Sheets("Caché").Range("B23").FormulaR1C1 = solveur1
'Sheets("Caché").Range("B24").FormulaR1C1 = solveur2

Sheets("Caché").Range("B19").Formula = "=(($B$2*$B$8)/($B$20*$B$21*$B$16))+($B$20-1)*$B$21*$B$16*($B$14/2)+$B$4*$B$2*$B$22*$B$10"
Sheets("Caché").Range("B23").Formula = "=(($B$2*$B$9)/($B$21*$B$16))+($B$21*$B$16*$B$15)/2-(RACINE(2*$B$2*$B$9*$B$15))"
Sheets("Caché").Range("B24").Formula = "=$B$4*$B$2*$B$22*$B$11"



SolverReset

SolverOk SetCell:="$B$19", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$20:$B$22", Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverAdd CellRef:="$B$23", Relation:=1, FormulaText:="$B$24"
    SolverAdd CellRef:="$B$20", Relation:=3, FormulaText:="1"
    SolverAdd CellRef:="$B$20", Relation:=4, FormulaText:="entier"
    SolverAdd CellRef:="$B$21", Relation:=3, FormulaText:="1"
    SolverAdd CellRef:="$B$21", Relation:=4, FormulaText:="entier"
    SolverAdd CellRef:="$B$22", Relation:=3, FormulaText:="1e-18"
SolverSolve Userfinish:=True
    
SolverReset

f2 = Sheets("Caché").Range("B19").Value


En fait l'erreur intervient dans la cellule de l'excel, il m'affiche #NOM à la cellule B23.
Je sais que ça veut dire que la formule est mal écrite mais je n'arrive pas à trouver l'erreur.
Je pense que si vous lancez le programme ça vous affichera pareille.
0
Il semblerait que ce soit la racine qui pose problème dans :
Sheets("Caché").Range("B23").Formula = "=(($B$2*$B$9)/($B$21*$B$16))+($B$21*$B$16*$B$15)/2-(RACINE(2*$B$2*$B$9*$B$15))"
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Gregooz
Modifié le 5 janv. 2019 à 19:49
si tu veux utiliser les formules en français dans VBA, je pense mieux d'utiliser FormulaLocal au lieu de Formula.
cela ne fonctionnera que dans un Excel en français: peut-être préférable de mettre tes formules en anglais en VBA.
tu peux aussi faire exposant un demi.
0
Maintenant j'ai un autre problème... Le solveur dans le programme ne respecte pas les contraintes appliquées.
0
C'est bon tout marche merci pour votre aide !;)
0