[VB6] Utiliser le solver d'Excel
Bonjour :)
je fais une application sous vb6 qui me génère des systèmes d'équations. Je souhaite à présent les résoudre grâce au solver d'Excel par la méthode des moindres carrés.
j'ai donc placé la référence à Excel, et généré mon document comme il faut (je vérifie à chaque fois en enregistrant le document), il ne me reste plus qu'à exécuter le solver, mais je n'y arrive pas :(
j'ai essayé en copiant le code créé par les enregistreurs de macros pour ajouter la référence au solver, et ca marche. En revanche, quand je copie le code de la macro d'exécution du solver, j'obtiens un message d'erreur :(
code de déclaration des variables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim ExcelApp As Excel.Application
Dim Classeur As Excel.Workbook
Dim Feuille As Excel.Worksheet
Dim Plage As Excel.Range
'nouvelle instance d'application Excel
Set ExcelApp = New Excel.Application
'ne pas afficher d'alertes
ExcelApp.DisplayAlerts = False
'nouveau classeur
Set Classeur = ExcelApp.Workbooks.Add(xlWBATWorksheet)
'sélectionner la feuille
Set Feuille = ExcelApp.Worksheets(1)
Feuille.Name = "CMP" |
ce code fonctionne bien :)
code pour ajouter la référence au solver :
Code:
ExcelApp.AddIns("Solver Add-in").Installed = True
ce code fonctionne bien aussi (à chaque fois j'enregistre le fichier grâce à la méthode "SaveAs" et je vérifie), j'ai bien "Solver Add-In" de cocher dans les options de macros complémentaires (menu outils -> macros complémentaires)
par contre, quand je copie le code de la macro d'exécution du solver :
Code:
1 2 3 4 5 6 7
| SolverOk SetCell:="$G$3", MaxMinVal:=2, ValueOf:="0", ByChange:="$A$1:$B$1"
SolverAdd CellRef:="$A$1", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$B$1", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$G$3", MaxMinVal:=2, ValueOf:="0", ByChange:="$A$1:$B$1"
SolverOptions MaxTime:=100, Iterations:=100, Precision:=0.000001, AssumeLinear:=False, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, IntTolerance:=5, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=False
SolverOk SetCell:="$G$3", MaxMinVal:=2, ValueOf:="0", ByChange:="$A$1:$B$1"
SolverSolve |
j'obtiens une erreur de compilation lors de l'exécution de la feuille qui contient ce code :
Citation:
Procédure Sub ou Function non définie
l'erreur se trouve dès la première ligne, ce qui me fait bien penser que le solver n'est pas reconnu
Comment faire donc pour pouvoir "piloter" le solver d'Excel depuis VB6 ?
j'ai essayé de donner un maximum de détails, mais si quelque chose n'est pas clair, n'hésitez pas à me le faire savoir ;)
merci pour votre aide !