VBA automatisation du solveur ne fonctionne pas [Résolu]

- - Dernière réponse :  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
Afficher la suite 

1 réponse

Messages postés
8630
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 octobre 2019
429
0
Merci
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?
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.
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))"
yg_be
Messages postés
8630
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 octobre 2019
429 > Gregooz -
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.
Maintenant j'ai un autre problème... Le solveur dans le programme ne respecte pas les contraintes appliquées.
C'est bon tout marche merci pour votre aide !;)
Commenter la réponse de yg_be