Excell 2007 Appel solveur dans macro

Bonjour,

Je cherche à me servir du solveur à partir d'une macro. J'ai plusieurs cellules à optimiser et je voudrais le faire en un clic grâce à une macro.
Avec l'enregistreur de macro, j'arrive à faire une macro qui optimise une seule cellule.
Le problème et que j'enregistre mes données dans le solveur avec les coordonnées de

La première cellule à minimiser est B17 (j'ai entré une fonction objectif)
Les cellules variables sont B15 et B16
Et les contraintes sont B15<=3
B15 = entier
B15 >= 1
B16 <= 10
B16 = entier
B16 >= 7
B17 >= 0

La deuxième cellule à minimiser est D17
Les cellules variables et les contraintes sont similaire en changeant B en D.

Et ainsi de suite avec F17, H17, J17... , 12 cellules en tout.

J'ai essayé de changer tous les B en D dans la macro enregistrée et évidemment ça ne fonctionne pas.

SolverOk SetCell:="$B$17", MaxMinVal:=2, ValueOf:="0", ByChange:="$B$15:$B$16"
SolverSolve

Je ne comprends pas où sont exprimées les contraintes dans les lignes ci-dessus et je ne comprends pas les expressions : ValueOf:="0" et MaxMinVal:=2.

Pourriez-vous m'aider ?

Merci beaucoup

7 réponses

  1. Bonsoir,
    Concernant votre macro, certaine référence des [Relation :=] sont fausses.
    Vous pouvez voir ma procédure et comparer les valeurs y relatives.
    Concernant : un seul clic j'optimise tous les mois ....
    .- Les douze mois de l'année ... Oui / Non ?
    .- Même disposition que votre exemple ... Oui / Non ... ?
    0
    1. Bonjour,
      La macro est fausse.
      Avez-vous essayé ma proposition ...Oui / Non !
      Au cas ou voici le fichier ZIP : https://www.cjoint.com/?3bwrouElJeR
      0
      1. Bonjour,

        J'ai réussi à ouvrir le fichier. Cela fonctionne mais il faudrait qu'en un seul clic j'optimise tous les mois. C'est déjà bien, merci pour tout ce travail.
        0
      2. Pourriez-vous me dire pourquoi ma macro ne fonctionne pas ?
        Merci encore
        0
    2. Bonjour,
      Ma proposition voir feuille [Test] : https://www.cjoint.com/?3bvwHPwO4a8
      Merci de votre réponse.
      0
      1. Bonjour,
        Je vous remercie tout d'abord de vous être penché sur mon problème. Cependant, je n'arrive pas à ouvrir le fichier se trouvant sur ce lien. Désole pour mon incompétence répétée...
        0
    3. Voici le lien sur lequel se trouve mon fichier : https://www.cjoint.com/?0bvaHVXBDhw
      0
      1. Bonjour,
        Il serait bien d'avoir la macro que vous avez enregistrée!
        Salutations.
        Le Pingou
        0
      2. Quand j'ouvre le fichier la macro y est, je ne comprends pas.
        0
    4. Contributeur
      Bonsoir,

      et [ici https://support.microsoft.com/en-us/help/843304] une aide sur le solver en vba.
      eric
      0
      1. Merci, je vais plancher dessus ce weekend !
        0
      2. Grâce à ton aide, j'ai pu écrire cette macro. Il n'y a apparemment pas d'erreur mais ça n'optimise rien. En gros, je cherche à minimiser le reste (B17) de la division euclidienne de B12 par B15 en faisant varier B15 et B16. Dans la cellule B17, la formule est donc =B15*B16-B12

        Une idée sur mon erreur ?

        Voici la macro :

        Sub Macro1()

        Solverok setcell:="$B$17", maxminval:=2, bychange:="$B$15:$B$16"
        SolverAdd CellRef:="$B$15", Relation:=1, FormulaText:=3
        SolverAdd CellRef:="$B$15", Relation:=2, FormulaText:=entier
        SolverAdd CellRef:="$B$15", Relation:=3, FormulaText:=1
        SolverAdd CellRef:="$B$16", Relation:=1, FormulaText:=10
        SolverAdd CellRef:="$B$16", Relation:=2, FormulaText:=entier
        SolverAdd CellRef:="$B$16", Relation:=3, FormulaText:=7
        SolverAdd CellRef:="$B$17", Relation:=3, FormulaText:=0
        SolverSolve

        End Sub
        0