Probléme macro et solver

DJARNAUD

XLDnaute Junior
bonjour,

Je viens d'utiliser l'enregistreur de macro afin d'intégrer le solver à ma macro.
voici le code
VB:
Sub Macro3()
'
' Macro3 Macro
'

'
    SolverOk SetCell:="$V$4", MaxMinVal:=3, ValueOf:=1.1, ByChange:="$B$18", Engine _
        :=1, EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:="$V$4", MaxMinVal:=3, ValueOf:=1.1, ByChange:="$B$18", Engine _
        :=1, EngineDesc:="GRG Nonlinear"
    SolverSolve
End Sub
Toutefois, j'ai un message d'erreur : erreur de compilation, sub ou function non définie
Pourriez vous m'aider?

D'avance merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Le Complément Solveur étant activé coté Excel, essayez en cochant la référence Solver coté VBA.
 

Dranreb

XLDnaute Barbatruc
Bonjour Job75.
Chez moi aussi. Encore faut-il qu'il soit ouvert pour qu'elle soit disponible. Chez moi, du coté Excel il s'appele "Complément Solveur".
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, pourquoi ne le serait-ce pas ? Je ne connais pas de cas où des arguments de procédures ou de méthodes doivent obligatoirement être des constantes.
 

DJARNAUD

XLDnaute Junior
Bonjour,

Je me suis mal exprimé.

En fait, je voudrai que, dans la fenêtre ci-dessous, la valeur à renseigner soit une valeur contenue dans une cellule.

Merci

1031211
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pas clair: C'est toujours l'adresse d'une cellule cible qu'il faut spécifier au solveur.
Ça change quoi à ma réponse ?
Si c'est une cellule définie en variable Target As Range, vous pouvez mettre SolverOk SetCell:=Target.Address par exemple.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Eh bien c'est pareil comme partout … MaxMinVal:=ActiveSheet.[K2].Value
Généralisez donc un peu dans votre esprit la notion d'expression, bon sang !
 

DJARNAUD

XLDnaute Junior
Re bonjour,

je reviens vers vous car j'ai une erreur dans mon macro.
j'ai bien réussi à faire référence à une cellule pour la valeur. Par contre pour le setcell et le bychange, je pense qu'il y a une erreur de syntaxe mais je ne trouve pas laquelle.
merci d'avance pour votre aide
VB:
Private Sub Macro7_Click()
'
    Range("F4").Select
    Selection.ClearContents
    SolverOk SetCell:=Worksheets("test").Range("$C$2"), MaxMinVal:=3, ValueOf:=Worksheets("test").Range("H1").Value, ByChange:=Worksheets("test").Range("$F$4"), _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:=Worksheets("test").Range("$C$2"), MaxMinVal:=3, ValueOf:=Worksheets("test").Range("H1").Value, ByChange:=Worksheets("test").Range("$F$4"), _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve
End Sub
 

Dranreb

XLDnaute Barbatruc
Les paramètres SetCell et ByChange sont des String valant obligatoirement des références de cellules ou de plages.
Ça a l'air fixe dans votre cas. Mais si c'était des expressions Range pouvant varier vous pourriez y mettre derrière .Address(External:=True) par exemple. Si c'est fixe ne pas oublier de préciser la feuille si ce n'est pas la feuille active SetCell:="test!$C$2" par exemple.
À moins, bien sûr que vos cellules C2 et F4 contiennent des références de cellule et de plage …
Vous pouvez aussi chercher de l'aide sur le solveur, parce que je peux me tromper, vu que je n'ai jamais eu à écrire de macro le pilotant.
Il se pourrait par exemple au contraire que des expressions Range soit acceptées, mais alors si vous vouliez qu'il en prenne les valeurs comme adresses de cellules, vous avez oublié de préciser .Value derrière pour qu'il puisse comprendre que ce n'est pas l'objet Range qui est à considérer.
 
Dernière édition:

Discussions similaires


Haut Bas