Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Probléme macro et solver

  • Initiateur de la discussion Initiateur de la discussion DJARNAUD
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DJARNAUD

XLDnaute Occasionnel
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
 
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:
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
 
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:
Bonjour,

Je ne sais pas si cela peut t'aider mais voici un exemple d'utilisation du solveur sous VBA. A noter que les cellules "intéressantes" de la feuille sont nommées et que ces noms (chaînes) sont utilisés tels quel dans le VBA. Si les noms sont déclarés au niveau Classeur, il n'est pas nécessaire de spécifier la feuille...

Cordialement
 

Pièces jointes

Précision : ma phrase "Si les noms sont déclarés au niveau Classeur, il n'est pas nécessaire de spécifier la feuille" est superflue car, si par ex., dans le Worksheet_Change, on met seulement un Call Solveur et que ce Sub Solveur (qui est dans un module hors feuille) contient les huit lignes relatives au solveur, cela fonctionne même si les noms dans la feuille ont été déclarés au niveau Feuil1 et non Classeur.

Cordialement
 
Bonjour.
Remarque: lorsqu'il n'y a qu'une cellule à changer, on utilise plutôt Valeur cible que le solveur.
… après s'être un tout petit peu décarcassé pour vérifier si on en avait bien besoin, les fonctions inverses étant souvent plus faciles à trouver qu'on ne le croit généralement …
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…