À propos du Solveur + Solveur et macro

Magic_Doctor

XLDnaute Barbatruc
Bonjour à tous,

Pour trouver une valeur optimale il est judicieux d'utiliser le Solveur qui est un instrument d'analyse très puissant et qui n'est pas installé dans Excel par défaut. Pour cela il faut installer la macro complémentaire qui lui correspond (voir l'aide d'Excel). Bref c'est un complément peu connu, mais sans doute l'un de ceux qui montre le mieux l'incroyable capacité de calcul d'Excel. Fatalement, au plus la bécane sera puissante, au plus le résultat apparaîtra rapidement (il faut souvent attendre plusieurs secondes, vu les milliers de calculs réalisés jusqu'à ce que le solveur trouve la valeur la plus appropriée). Peu utilisé (pratiquement personne connaît son existence, et pourtant il es là, il suffit de l'installer...!), le Solveur mérite d'être découvert !!!!

Voici donc mon problème avec le Solveur :

j'ai une cellule dans laquelle on rentre une valeur entière ou décimale. Cette valeur fait partie des variables d'une formule. Dans une autre cellule apparaît forcément le résultat de la formule.
Je demande au solveur de trouver la valeur de la 1ère cellule pour que le résultat soit égal à une valeur que je lui indique. Le solveur se met à calculer toutes les possibilités jusqu'à atteindre la valeur stipulée.

Je fais l'essai : ça marche !
Je décide d'écrire une macro pour automatiser la tâche.
Ne connaissant absolument pas la syntaxe pour le solveur, j'enregistre une macro pendant que j'effectue toutes les démarches précédentes, quitte ensuite à peaufiner la macro.
La macro s'enregistre bien.
Voici son contenu :

Sub Macro1()

Range("BV3").Select
ActiveCell.FormulaR1C1 = "1"
Range("BV4").Select
SolverAceptar definirCelda:="$BW$3", valorMáxMín:=1, valorDe:="350", _
celdasCambiantes:="$BV$3"
SolverResolver

End Sub

J'enclenche la macro pour voir si elle marche bien, et apparaît alors un message d'erreur :
"Sub ou fonction n'a pas été défini".
J'examine de plus près la syntaxe de la macro et curieusement je m'aperçois qu'il y a des choses écrites en espagnol (j'utilise en effet Excel en espagnol), alors que VBA est TOUJOURS en anglais !

Pourquoi donc ce problème quand on enregistre une macro avec le Solveur ?

Si l'un d'entre vous pouvait me l'expliquer, un grand merci !
 

Magic_Doctor

XLDnaute Barbatruc
Re : À propos du Solveur + Solveur et macro

Je viens de fouiner dans la BD du forum.
Staple1600, suite à une question de Myriam à propos d'une impossibilité à lancer le Solveur par macro, avait répondu :

Résultat d'une macro enregistée :

Sub Macro3()
SolverOk SetCell:="$C$10", MaxMinVal:=1, ValueOf:="1000", ByChange:="$B$11"
SolverAdd CellRef:="$C$10", Relation:=3, FormulaText:="10"
SolverOk SetCell:="$C$10", MaxMinVal:=1, ValueOf:="1000", ByChange:="$B$10"
SolverDelete CellRef:="$C$10", Relation:=3, FormulaText:="10"
SolverOk SetCell:="$C$10", MaxMinVal:=1, ValueOf:="1000", ByChange:="$B$10"
SolverAdd CellRef:="$B$11", Relation:=3, FormulaText:="75"
SolverOk SetCell:="$B$11", MaxMinVal:=1, ValueOf:="", ByChange:="$B$10"
End Sub

(ou j'ai fait n'importe quoi avec le solveur)


Conclusion: on peut lancer le solveur non ?

Je fais donc les modifications suivantes :

Sub Macro1()

[$BV$3] = 1

SolverOk SetCell:="$BW$3", MaxMinVal:=1, ValueOf:="350", ByChange:="$BV$3"

End Sub

Là, tout est écrit en anglais !
Je déclenche la macro :
Toujours le même message d'erreur : "Sub ou fonction n'a pas été défini"

avec surlignement de SolverOk dans la macro.

Bizarre, bizarre...
 

liloucmoi

XLDnaute Occasionnel
Re : À propos du Solveur + Solveur et macro

Bonjour Magic doctor,

Si tu as toujours le problème, vérifie ces deux choses dans l'ordre :

  • Que tu as bien le solveur d'activé dans les macros complémentaires.
    (Si tu peux cliquer sur Outils/Solveur depuis Excel)
  • Que tu as bien mis le solveur comme référence dans ton projet VBE.
    (Depuis VBE, tu fais "Outils/Références" Pour cocher "SOLVER", "Solver.xla" ou "solver.xls" (ca dépend de ce que tu as) puis "ok".
    Si tu n'as pas de suite une des trois possibilités dans la liste, "parcourir" et en général c'est caché dans "program files/Microsoft Office/Office ##/Bibliothèques/" et prend bien garde dans l'ascenseur du bas de bien chercher des fichiers xla ou xls et pas dll.)

Si ces deux choses sont faites, tu as l'onglet "Références/Référence à Solver.Xla" dans ton projet VBA. Et à la compilation, tu n'as pas d'erreur de Sub ou fonction non définie.

En espérant avoir été clair et pas trop tard.
 

Discussions similaires