Fermeture de la fenetre d iteration generee par le solveur

Bonjour

J ai fait une macro pour qui doit me resoudre 81 equations a la suite. Si au bout de 10000 iterations , la macro n a pas trouve de solutions, je veux qu elle passe a l equation suivante.

Le probleme, c est qu au bout de 10000 iterations, j ai deux fenetres qui apparaissent pour me dire que le nombre maximun d iterations a ete atteint et pour valider le fait que j arrete le solveur. Ce qui empeche ma macro de passer au cas suivant. J ai reussi a enlever une fenetre en utilisant UserFinish:=True. Mais comment faire pour que la macro valide l autre fenetre et passe au cas suivant ?

J ai essaye Application.DisplayAlerts = false au debut du code et Application.DisplayAlerts = true à la fin, mais ca ne marche pas.

Merci d avance

Bonjour enipee, forum,

Peux-tu mettre le code, que l'on regarde?

Voila le code du solveur

Application.DisplayAlerts = False

SolverReset

Sheets("Summary").Activate

SolverOk SetCell:="$c$35", MaxMinVal:=3, ValueOf:="0", ByChange:="$B$16:$B$18"

SolverAdd cellref:=Worksheets("Summary").Cells(35, 4), _

relation:=2, _

formulatext:=0

SolverAdd cellref:=Worksheets("Summary").Cells(50, 4), _

relation:=2, _

formulatext:=0

SolverOptions MaxTime:=600, Iterations:=10000, Precision:=0.1, _

AssumeLinear:=False, StepThru:=False, Estimates:=2, Derivatives:=1, _

SearchOption:=1, IntTolerance:=20, Scaling:=False, Convergence:=0.1, _

AssumeNonNeg:=False

SolverSolve UserFinish:=True

Application.DisplayAlerts = True

Bonjour enipee, forum,

enipee a écrit :

Ce qui empeche ma macro de passer au cas suivant.

Comment sait-on dans ton code quand ça passe au cas suivant?

Est-il possible que tu joignes un bout de fichier en gardant tout ce qu'il faut garder et en enlevant ce qui nous est superflu?

Bonjour

Le code se decompose de la maniere suivante

open sub()

For cas = 1 to 81

'incrementation des donnees de l equation

'resolution de l equation grace au solveur

'recuperation du resultat de l equation

next c

end sub

Je pense qu il faudrait coder afin que la macro fasse comme si on appuyait sur STOP quand le pop up annoncant que le nombre maximum d iterations est atteint.

6nouveau-zunko.zip (47.91 Ko)

Bonjour à tous,

Et avec un "On error resume next" comme ci-dessous :

Application.DisplayAlerts = False

SolverReset

Sheets("Summary").Activate

SolverOk SetCell:="$c$35", MaxMinVal:=3, ValueOf:="0", ByChange:="$B$16:$B$18"

SolverAdd cellref:=Worksheets("Summary").Cells(35, 4), _

relation:=2, _

formulatext:=0

SolverAdd cellref:=Worksheets("Summary").Cells(50, 4), _

relation:=2, _

formulatext:=0

SolverOptions MaxTime:=600, Iterations:=10000, Precision:=0.1, _

AssumeLinear:=False, StepThru:=False, Estimates:=2, Derivatives:=1, _

SearchOption:=1, IntTolerance:=20, Scaling:=False, Convergence:=0.1, _

AssumeNonNeg:=False

On error resume next 'ICI

SolverSolve UserFinish:=True

On error resume next 'ou ICI

Application.DisplayAlerts = True

Sans être sûr...

Bonjour

J ai essaye la manip ci dessus mais ca ne marche pas. D un autre cote j ai commence a bidouiller un morceau de code... si jamais ca inspire quelqu un.

En tout cas merci pour les reponses

'code du solveur

Results = SolverSolve(true)

Select Case Results

Case 3

'Max Iterations was exceeded

???

Case else

UserFinish:=True

End Select

Fruit de plusieures heures de recherche et de bidouillage, voici une solution:

macroprincipale()

solveroptions stepthru=false

result = SolverSolve(userfinish:=True, showref:="pasdepopup")

end sub

Sub pasdepopup()

Const xContinue As Boolean = False

End Sub

Merci de votre aide

Rechercher des sujets similaires à "fermeture fenetre iteration generee solveur"