Bonjour,
je tente tant bien que mal de programmer le Solver dans VBA. N’étant pas familiariser plus que ça avec l’outil VBA, je fonctionne essentiellement par essais/erreurs. Je pense avoir compris la logique générale pour programmer le Solver mais je rencontre néanmoins un problème. Lorsque je lance la macro, cette dernière ne prend pas en compte une partie du code, ce qui a pour conséquence de ne pas prendre en compte une ou plusieurs contraintes de mon problème d’optimisation… Or, ce qui m’interpelle, c’est qu’une des contraintes (la contrainte 1) est toujours prise en compte lorsque j’exécute la Macro mais pas les deux autres. J’ai vérifié plusieurs fois la définition de l’emplacement des cellules reprises dans mon code et elle est correcte. D’ailleurs, lorsque j’exécute le Solver manuellement, cela fonctionne parfaitement (ce qui prouve que mon problème est formulé correctement)… Si une bonne âme aguerrie en informatique pouvait m’aider, je lui serais reconnaissant…Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub SolverEx(i, a, b) La méthode prends trois arguments en entrée qui permettent de definer lensemble des cellules nécessaires SolverReset SolverOk SetCell:=Cells(a, b), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(a, b - 4), Cells(a + NA - 1, b - 4)) _ , Engine:=1, EngineDesc:="GRG Nonlinear" Contrainte 1 (celle qui est prise en compte) SolverAdd CellRef:=Range(Cells(a, b - 4), Cells(a + NA - 1, b - 4)), Relation:=3, FormulaText:="0" Contrainte 2 SolverAdd CellRef:=Cells(a + NA, b - 4), Relation:=2, FormulaText:=Cells(a + NA, b - 3) Contrainte 3 SolverAdd CellRef:=Cells(a + 1, b), Relation:=2, FormulaText:=Cells(a - 4 - NPF - ((i - 1) * (6 + NA)) , b - 3) SolverSolve End Sub
Partager