VBA automatisation du solveur ne fonctionne pas

Résolu
Gregooz -  
 Gregooz -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. Gregooz
       
      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
    2. Gregooz
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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.
        0
    3. Gregooz
       
      Maintenant j'ai un autre problème... Le solveur dans le programme ne respecte pas les contraintes appliquées.
      0
    4. Gregooz
       
      C'est bon tout marche merci pour votre aide !;)
      0