Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation du solveur excel sous VB6

1 réponse
Avatar
Michel
Je voudrais utiliser le solveur d'excel, avec VB6 ; Pour réaliser cela je
pense qu'il faut charger la dll du solveur d'excel dans référence de VB6

Le problème que je rencontre est qu'il n'est pas possible de charger la dll
Solver32.dll qui se trouve sous " C:\Program Files\Microsoft
Office\Office\Macrolib\Solveur " ; En conséquence de quoi quand j'utilise
les instructions du solveur dans VB 6, il ne les reconnaît pas.
J'ai essayé de charger la dll solver32.dll dans référence de vb 6 et il me
sort le message d'erreur suivant ; « Impossible d'ajouter une référence au
fichier spécifié »
Merci de m'aider et surtout de m'indiquer s'il est possible d'utiliser le
solveur d'excel en VB

Merci

1 réponse

Avatar
parci
On Wed, 23 Mar 2005 21:15:37 +0100, "Michel"
wrote:

Je voudrais utiliser le solveur d'excel, avec VB6 ; Pour réaliser cela je
pense qu'il faut charger la dll du solveur d'excel dans référence de VB6

Le problème que je rencontre est qu'il n'est pas possible de charger la dll
Solver32.dll qui se trouve sous " C:Program FilesMicrosoft
OfficeOfficeMacrolibSolveur " ; En conséquence de quoi quand j'utilise
les instructions du solveur dans VB 6, il ne les reconnaît pas.
J'ai essayé de charger la dll solver32.dll dans référence de vb 6 et il me
sort le message d'erreur suivant ; « Impossible d'ajouter une référence au
fichier spécifié »
Merci de m'aider et surtout de m'indiquer s'il est possible d'utiliser le
solveur d'excel en VB



Le solveur d'Excel ne peut pas être utilisé sans Excel (il y aurait
bien une fonction dans Solver32.dll - solve - mais qui ne semble pas
documentée).

D'autre part, les fonctions publiques de "solver.xla" sont buggées :
on n'obtient rien de bon en les utilisant comme fonctions
personnalisées de feuille de calcul.

Il reste donc à écrire une macro utilisant le solveur dans un classeur
xls et d'appeler ensuite cette macro depuis VB.


Par exemple :

Dans un classeur xls que je sauvegarde sous le nom
"C:Usersolveur_test.xls" :

ajouter la référence :
C:Program FilesMicrosoft OfficeOfficeMacrolibSolveursolver.xla

copier la macro suivante (utilisation minimale du solveur pour
l'exemple) :
Public Function Solv(ByVal CellCible As String, _
ByVal CellVariable As String, _
ByVal ValeurCible As Double) As Double

SolvReset

SolvOk SetCell:=Range(CellCible), _
MaxMinVal:=3, _
ValueOf:=ValeurCible, _
ByChange:=Range(CellVariable)

SolvSolve True

Solv = Range(CellVariable).Value

End Function


Appel depuis VB :
ajouter la référence aux objets Excel

Private Sub Command1_Click()

Dim xlApp As New Excel.Application
Dim wbk As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim dResult As Double

'facultatif
xlApp.Visible = True

'on ouvre le classeur
Set wbk = xlApp.Workbooks.Open("C:Usersolveur_test.xls")

'les paramètres sur la première feuille de calcul
'on cherche la racine de l'équation x² + 2x - 5 = 0
Set wsh = wbk.Worksheets(1)
wsh.Activate

wsh.Range("A19") = 3
wsh.Range("A20").Formula = "¡9^2+A19*2-5"

'résultat
dResult = xlApp.Run("Solv", "A20", "A19", 0)
MsgBox dResult

'ferme le classeur et quitte Excel
wbk.Close False

Set wsh = Nothing
Set wbk = Nothing

xlApp.Quit

End Sub


Remarque, si la référence à "solver.xla" est variable, tu peux la
modifier par programmation en utilisant la méthode
.VBProject.References.AddFromFile de l'objet Workbook (nécessite
l'ajout de la référence Microsoft Visual Basic for Applications
Extensibility dans le classeur)