Utiliser le Solveur dans un programme VBA

Dans cet article, je ne vais pas vous apprendre à utiliser le solveur. Je suppose donc que vous savez déjà à quoi il sert et comment le paramétrer. L’idée ici est de pouvoir l’utiliser dans une macro de façon à réitérer le lancement du solveur. En effet, certains points sont indispensable à connaître.
Voici les 4 à savoir pour bien utiliser le Solveur sous VBA.

Etape 1: Activer le solveur

RUBAN: Développeur > Compléments > Compléments

Solveur VBA 01

Puis cochez « Solver Add-in »:

Solveur VBA 02

 

Etape 2: Enregistrer la macro

Le but ici est d’enregistrer la macro afin de récupérer les données du solveur.

Solveur VBA 03

Nommez la macro pour la ré-utiliser:

 

Solveur VBA 04

Lancer le solveur

RUBAN: Données > Analysis > Solver

Solveur VBA 05

 

Arrêtez ensuite la macro (en cliquant sur le petit carré bleu en bas à gauche).

ALT + F11 pour le résultat

Pour vérifier l’enregistrement, ouvrez l’éditeur de Macro avec ALT+F11.

Solveur VBA 06

 

Etape 3: La référence

Il s’agit d’un point très important pour éviter ce genre d’erreur:

Solveur VBA 07

 

Allez dans Outils > Références et ajoutez le solver comme ci-dessous:

Solveur VBA 08

Solveur VBA 09

 

Vous constaterez alors que la partie Références a été ajoutée dans la fenêtre du projet:

Solveur VBA 10

 

Etape 4: modifier la macro

Si vous avez besoin de modifier le solveur, modifier la ligne suivante en fonction de vos besoins:
SolverOk SetCell:= »$H$8″, MaxMinVal:=1, ValueOf:=0, ByChange:= »$B$14:$G$14,$B$15,$E$15,$B$16″, Engine:=1, EngineDesc:= »GRG Nonlinear »
Sinon, il faut la structure suivante:

Solveur VBA 11


Bien penser à:

  • Effacer certaines plages avec ClearContents
  • Ajouter Userfinish:=True lors du lancement du solveur pour éviter de faire OK à la fin

 

Conclusion

Vous avez à présent toutes les clés pour utiliser le Solveur dans une macro VBA.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Inscrivez-vous et recevez ce livre gratuitement (cliquez sur l'image)