Solveur et code VBA
Résolu/Fermé5 réponses
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
22 janv. 2010 à 16:40
22 janv. 2010 à 16:40
Bonjour,
Je ne peux pas plus sans le fichier et la procédure.
Pouvez-vous mettre le fichier sur https://www.cjoint.com/ ou http://cijoint.fr/ et poster le lien ?
Je ne peux pas plus sans le fichier et la procédure.
Pouvez-vous mettre le fichier sur https://www.cjoint.com/ ou http://cijoint.fr/ et poster le lien ?
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
24 janv. 2010 à 22:48
24 janv. 2010 à 22:48
Bonjour,
En examinant votre procédure [Calcul] j'ai constaté que la plage [Range("Equation").FormulaR1C1 =] contient une formule.
Est-ce cette même formule qui est la référence pour SolverOk SetCell:=Range("Equation") ?
Note:
Comme signalé dans le poste précédent; l’argument [Equation] de l’objet Range fait référence à [=Métré !#REF !] !
En marge, il semble que votre classeur est toujours entrain de faire des calculs chaque fois clic sur une cellule il faut toujours attendre pour récupérer le focus, c'est ennuyeux ...!
En examinant votre procédure [Calcul] j'ai constaté que la plage [Range("Equation").FormulaR1C1 =] contient une formule.
Est-ce cette même formule qui est la référence pour SolverOk SetCell:=Range("Equation") ?
Note:
Comme signalé dans le poste précédent; l’argument [Equation] de l’objet Range fait référence à [=Métré !#REF !] !
En marge, il semble que votre classeur est toujours entrain de faire des calculs chaque fois clic sur une cellule il faut toujours attendre pour récupérer le focus, c'est ennuyeux ...!
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
27 janv. 2010 à 15:12
27 janv. 2010 à 15:12
Bonjour,
Vous pouvez écrire la formule comme suit :
ou
A force de recherche, il faut respecter ceci :
SetCell Argument de type Variant facultatif. Fait référence à une seule cellule de la feuille de calcul active.
Donc, ceci n’est pas posible : où 'Equation' et 'a' sont des variables de ma macro.
Vous pouvez écrire la formule comme suit :
solverok setcell:="Equation", maxminval:=3, valueof:="0", bychange:="a"
ou
SolverOk SetCell:=Range("Equation"), MaxMinVal:=3, ValueOf:="0", ByChange:=Range("a")
A force de recherche, il faut respecter ceci :
SetCell Argument de type Variant facultatif. Fait référence à une seule cellule de la feuille de calcul active.
Donc, ceci n’est pas posible : où 'Equation' et 'a' sont des variables de ma macro.
bonjour
Merci pour les recherches en tous cas.
Effectivement, ça n'est pas possible avec le solveur d'Excel. Je me suis rapproché de Frontline, Inc. aux US, qui m'ont conseillé de télécharger leur module Risk Solver Platform pour aller ensuite programmer ensuite en VB.
Du coup, ça devient trop compliqué pour ce que je voulais faire.
Je reste donc avec ce que j'ai fait et qui fonctionne à peu près.
Merci encore
Merci pour les recherches en tous cas.
Effectivement, ça n'est pas possible avec le solveur d'Excel. Je me suis rapproché de Frontline, Inc. aux US, qui m'ont conseillé de télécharger leur module Risk Solver Platform pour aller ensuite programmer ensuite en VB.
Du coup, ça devient trop compliqué pour ce que je voulais faire.
Je reste donc avec ce que j'ai fait et qui fonctionne à peu près.
Merci encore
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
22 janv. 2010 à 16:01
22 janv. 2010 à 16:01
Bonjour,
Juste au passage, la variable [equation] doit-être définie comme objet de type [Range]
exemple : Dim Equation as Range et ensuite lui attribuer la valeur.
Note : attention si vous avez 2 fois le même nom !
Salutations.
Jean-Pierre
Juste au passage, la variable [equation] doit-être définie comme objet de type [Range]
exemple : Dim Equation as Range et ensuite lui attribuer la valeur.
Note : attention si vous avez 2 fois le même nom !
Salutations.
Jean-Pierre
Merci pour ta réponse.
Mais le problème est que mon équation est une fonction de a Equation=f(a).
Du coup, ça ne fonctionne pas si Equation reste une Range, si? ou alors faut-il que j'écrive:
Dim Equation as Range
Dim a as Range
Equation.Formula= "=" & a.value^4 & "+" & a.value
Le problème est que ma résolution d'équation n'a rien à voir avec ce qui passe dans la feuille Excel. Autrement dit, je veux que le solveur résolve mon équation dans le code et non pas dans la feuille. Tu comprends ce que je veux dire?
Merci
Mais le problème est que mon équation est une fonction de a Equation=f(a).
Du coup, ça ne fonctionne pas si Equation reste une Range, si? ou alors faut-il que j'écrive:
Dim Equation as Range
Dim a as Range
Equation.Formula= "=" & a.value^4 & "+" & a.value
Le problème est que ma résolution d'équation n'a rien à voir avec ce qui passe dans la feuille Excel. Autrement dit, je veux que le solveur résolve mon équation dans le code et non pas dans la feuille. Tu comprends ce que je veux dire?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
22 janv. 2010 à 23:25
22 janv. 2010 à 23:25
Bonjour,
Merci pour la mise à disposition de votre fichier.
L’argument [Equation] de l’objet Range fait référence à [=Métré !#REF !], il m’est impossible de poursuivre sans connaitre la plage.
Merci pour la mise à disposition de votre fichier.
L’argument [Equation] de l’objet Range fait référence à [=Métré !#REF !], il m’est impossible de poursuivre sans connaitre la plage.
22 janv. 2010 à 17:50
La zone de calcul où intervient le solveur est dans la feuille 'Métré" en AW1.
La procédure principale s'appelle Calcul et utilise une fonction à part s'intitulant 'Résolution_solveur'.
merci