Partager via


Fonction SolverSolve

Lance l’exécution d’une solution de solveur. Cela revient à cliquer sur Résoudre dans la boîte de dialogue Paramètres du solveur.

Note Le complément Solveur n’est pas activé par défaut. Pour pouvoir utiliser cette fonction, il doit être activé et installé. Pour plus d’informations sur la procédure à suivre, voir Utilisation des fonctions VBA du solveur. Une fois le complément solveur installé, vous devez établir une référence à celui-ci. Dans Visual Basic Editor, avec un module actif, cliquez sur Références dans le menu Outils, puis sélectionnez Solveur sous Références disponibles. Si Solveur n’apparaît pas sous Références disponibles, cliquez sur Parcourir, puis ouvrez Solver.xlam dans le sous-dossier \Program Files\Microsoft Office\Office14\Library\SOLVER.

SolverSolve( UserFinish, ShowRef)

UserFinish, argument Variant facultatif. True pour renvoyer les résultats sans afficher la boîte de dialogue Résultats du solveur. False ou argument omis pour renvoyer les résultats et afficher la boîte de dialogue Résultats du solveur. ShowRef Optional Variant. Vous pouvez passer le nom d’une macro (sous forme de chaîne) en tant qu’argument ShowRef . Cette macro est ensuite appelée, au lieu d’afficher la boîte de dialogue Afficher la solution d’évaluation, chaque fois que le solveur s’interrompt pour l’une des raisons indiquées ci-dessous. La macro ShowRef doit avoir le nom de la fonction de signature (Raison en tant qu’entier). L’argument Reason est une valeur entière comprise entre 1 et 5 :

  1. Fonction appelée (à chaque itération) car la case Afficher le résultat des itérations dans la boîte de dialogue Options du solveur est cochée, ou fonction appelée car l’utilisateur a appuyé sur la touche Échap pour interrompre le solveur.

  2. Fonction appelée car la limite Temps max dans la boîte de dialogue Options du solveur a été dépassée.

  3. Fonction appelée car la limite Itérations dans la boîte de dialogue Options du solveur a été dépassée.

  4. Fonction appelée car la limite Nombre maximal de sous-problèmes dans la boîte de dialogue Options du solveur a été dépassée.

  5. Fonction appelée car la limite Nombre maximal de solutions réalisables dans la boîte de dialogue Options du solveur a été dépassée.

La fonction de macro doit retourner 1 si le solveur doit s’arrêter (identique au bouton Arrêter dans la boîte de dialogue Afficher la solution d’évaluation ) ou 0 si le solveur doit continuer à s’exécuter (identique au bouton Continuer ). La macro ShowRef peut inspecter les valeurs de solution actuelles dans la feuille de calcul ou effectuer d’autres actions telles que l’enregistrement ou le graphique des valeurs intermédiaires. Toutefois, cela ne doit pas modifier les valeurs des cellules de variable, ni modifier les formules dans les cellules objectif et de contrainte, car cela pourrait avoir un impact négatif sur le processus de résolution.

Valeur renvoyée par SolverSolve

Si un problème de solveur n’a pas été complètement défini, SolverSolve renvoie la valeur d’erreur #N/A. Autrement, le solveur est exécuté et SolverSolve renvoie une valeur entière correspondant au message qui apparaît dans la boîte de dialogue Résultats du solveur :

Valeur renvoyée Message
0 Le solveur a trouvé une solution. Toutes les contraintes et les conditions d'optimisation sont remplies.
1 Le solveur a convergé vers la solution actuelle. Toutes les contraintes sont remplies.
2 Le solveur ne peut pas améliorer la solution actuelle. Toutes les contraintes sont remplies.
3 Arrêt choisi lorsque le nombre maximal d'itérations a été atteint.
4 Les valeurs de cellule Objective ne convergent pas.
5 Le solveur n'a pas pu trouver de solution réalisable.
6 Le solveur a été arrêté à la demande de l'utilisateur.
7 Les conditions de linéarité requises par ce solveur PL ne sont pas remplies.
8 Le problème est trop important pour être géré par le solveur.
9 Le solveur a rencontré une valeur d'erreur dans la cellule cible ou de contrainte.
10 Arrêt choisi lorsque la limite de temps maximale a été atteinte.
11 La mémoire disponible est insuffisante pour résoudre le problème.
13 Erreur dans le modèle. Vérifiez que toutes les cellules et les contraintes sont valides.
14 Le solveur a trouvé une solution de nombre entier dans la tolérance. Toutes les contraintes sont remplies.
15 Arrêt choisi lorsque le nombre maximal de solutions réalisables [entier] a été atteint.
16 Arrêt choisi lorsque le nombre maximal de sous-problèmes réalisables [entier] a été atteint.
17 Le solveur a convergé en probabilité vers une solution globale.
18 Toutes les variables doivent avoir des limites supérieures et inférieures.
19 Les limites sur les variables sont en conflit dans la contrainte Binaire ou TousDifférents.
20 Les limites inférieures et supérieures sur les variables ne permettent aucune solution réalisable.

Exemple

Cet exemple utilise les fonctions du solveur pour optimiser la marge brute dans le cadre d’un problème commercial. La fonction SolverSolve commence l’exécution de la solution solveur. Le solveur appelle la fonction ShowTrial lorsque l’une des cinq conditions décrites ci-dessus se présente ; la fonction affiche simplement un message avec la valeur entière 1 à 5.

Worksheets("Sheet1").Activate 
SolverReset 
SolverOptions Precision:=0.001 
SolverOK SetCell:=Range("TotalProfit"), _ 
    MaxMinVal:=1, _ 
    ByChange:=Range("C4:E6") 
SolverAdd CellRef:=Range("F4:F6"), _ 
    Relation:=1, _ 
    FormulaText:=100 
SolverAdd CellRef:=Range("C4:E6"), _ 
    Relation:=3, _ 
    FormulaText:=0 
SolverAdd CellRef:=Range("C4:E6"), _ 
    Relation:=4 
SolverSolve UserFinish:=False, ShowRef:= "ShowTrial" 
SolverSave SaveArea:=Range("A33") 
 
Function ShowTrial(Reason As Integer) 
  Msgbox Reason 
  ShowTrial = 0 
End Function

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.