Rapport de message :*
 

Re: solver dans macro

Titre du sujet : Re: solver dans macro
par lannou le 10/07/2008 18:44:24

Bonjour à tous!

Bon, j'ai résolu mon problème précédent. En fait il fallait que j'active le fichier SOLVER.XLA

Le solveur fonctionne donc automatiquement quand j'appuie sur le bouton.
Par contre, j'ai un autre problème.

En fait le fichier va etre modifié et des données vont etre ajoutées. Il faut donc que je fasse en sorte que le solveur tourne même si on rajoute des données.

Pour ce faire j'ai écrit ce code :

Sub Macro2()
'
i1 = 9 'minimum du compteur de ligne de la colonne B
imax1 = Range("B65536").End(xlUp).Row
i2 = 9 'maximum du compteur de ligne de la colonne F
imax2 = Range("F65536").End(xlUp).Row

    SolverReset
    SolverOk SetCell:=Range("C" & imax1 + 1), MaxMinVal:=2, ValueOf:="0", ByChange:=Range("C9:C" & imax1)
    SolverAdd CellRef:=Range("C9:C" & imax1), Relation:=3, FormulaText:="0"
    SolverAdd CellRef:=Range("G9:G" & imax2), Relation:=3, FormulaText:=Range("H9:H" & imax2)
    SolverOk SetCell:=Range("C" & imax1 + 1), MaxMinVal:=2, ValueOf:="0", ByChange:=Range("C9:C" & imax1)
    SolverOptions MaxTime:=100, Iterations:=100, Precision:=0.000001, AssumeLinear _
        :=True, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, _
        IntTolerance:=5, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=False
    SolverOk SetCell:=Range("C" & imax1 + 1), MaxMinVal:=2, ValueOf:="0", ByChange:=Range("C9:C" & imax1)
    SolverSolve userFinish:=True

End Sub

Or la macro plante quand elle arrive à la ligne " SolverAdd CellRef:=Range("G9:G" & imax2), Relation:=3, FormulaText:=Range("H9:H" & imax2)"
Le message suivant apparaît : "Solver : an unexpected internal error, or available memory was exhausted"

Savez vous pourquoi j'ai ce message? Y a t'il une erreur dans le code que j'ai écrit? Comment faire en sorte que macro tourne?

Merci à vous tous!