IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

vba solveur excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut vba solveur excel
    Bonjour,

    Je souahite utiliser le solveur d'exel à partir DU VBA pour résoudre une équation du second degré .
    Cependant, le solveur ne trouve qu'une seule solution , comment obtenir la deuxieme?
    Puis, je souhaiterai enregistrer la solution trouvée: le solveur me demande si je veux garder la solution trouvee et replacer lancienne avec mais je veux selectionner cette solution trouvée par le solveur en la mettant dans une cellule tout en gardant lancienne solution, comment je pourrai faire?



    Comment faire afficher la boite de solution du solveur dans une autre feuille d'excel?
    j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sheets("azert" ).Select ( azert est ma deuxieme feuille d'excel)
     
    SolverOK SetCell:=Cells(1, 6), MaxMinVal:=0, ByChange:=Cells(3, 2)
     
    SolverSolve UserFinish:=True
     
     
    SolverFinish KeepFinal:=1


    mais rien ne ce passe par contre si j'écris , tout en se placant sur la premiere feuille d'excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SolverOK SetCell:=Cells(1, 6), MaxMinVal:=0, ByChange:=Cells(3, 2)
     
    SolverSolve UserFinish:=True
     
     
    SolverFinish KeepFinal:=1
    la le solveur me trouve des solutions.

    savez - vous pourquoi le solveur ne peut pas travailler sur la feuille nommé 'azert'?


    Merci de m'aider.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    les cellules spécifiées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, 6), MaxMinVal:=0, ByChange:=Cells(3, 2)
    sont dans quelle feuille ?



    as tu essayer en precisant le nom, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(1, 6), MaxMinVal:=0, ByChange:=Sheets("Feuil1").Cells(3, 2)
    michel

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Ou mettre le code dans un module et pas dans une feuille...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    merci de m'avoir répondu.

    Les cellules spécifiées dans dans la feuille "azert" .

    Par contren j'ai essaye lautre méthode mais je sais pas trop comment m'y prendre, j'ai écrit
    SolverOK SetCell:=Sheets("Feuil1").Cells(1, 6), MaxMinVal:=0, ByChange:=Sheets("Feuil1").Cells(3, 2)

    mais y a une erreur ' indice n'appartient pas à la sélection'

    Savez vous d'ou vient cette erreur?

    ET aussi comment met-on les valeurs dans un module??

    merci beaucoup.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par moimemessssssssss
    Les cellules spécifiées dans dans la feuille "azert" .

    Par contren j'ai essaye lautre méthode mais je sais pas trop comment m'y prendre, j'ai écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SolverOK SetCell:=Sheets("Feuil1").Cells(1, 6), MaxMinVal:=0, ByChange:=Sheets("Feuil1").Cells(3, 2)
    Normal que si ta feuille s'appelle azert et que tu mets feuil1 dans la fonction, ça ne marche pas très bien.

    Citation Envoyé par moimemessssssssss
    ET aussi comment met-on les valeurs dans un module??
    On ne met pas de valeurs dans un module, on y met du code.
    Le code que tu as écrit dans une feuille, il faut le déplacer dans un (nouveau) module.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    merci.
    voila j'ai rechange en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SolverOK SetCell:=Sheets("Sheet2").Cells(1, 6), MaxMinVal:=0, _
        ByChange:=Sheets("Sheet2").Cells(3, 2)
    SolverSolve UserFinish:=False
     
     
        SolverFinish KeepFinal:=1
    le programme se lance mais rien ne se passe : pas de message d'erreur, pas de boite de resultat.

    Comment avoir la boite de resultat ?

    mais comment ouvrir un module ?
    en fait, je ne sais pas c'est quoi un module.

    merci de m'aider.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    J'ai oublie de preciser que j'ai changé le nom des feuilles en sheet1 sheet2 sheet3
    la feuille 2 s'apelle maintenant sheet2
    voila

  8. #8
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    mais comment ouvrir un module ?
    en fait, je ne sais pas c'est quoi un module.
    Quand tu es dans l'éditeur de macros (Alt+F11)
    Menu Insertion
    Module


    ps
    merci d'utiliser les balises codes lorsque tu places un extrait de macro dans tes messages


    bon week end
    michel

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    merci de m'aider

    j'ai mis le code dans un module mais ca donne le meme resultat : rien ne ce passe.

    comment faire?
    merci

  10. #10
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Ca fait longtemps que je n'ai plus utilisé le solveur excel mais je suppose que ton résultat doit se trouver dans la cellule que tu as apppelé dans bychange...

    En revanche a ta place et si ton équation n'est pas trop compliqué j'utiliserais plutôt un algo fait main pour la résoudre. J'utilisais en effet le solveur mais je me suis aperçu que selon la valeur initiale que tu rentrais, il ne te renvoyait pas exactement le même résultat!!!! (à moins d'avoir une solution exacte)

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Citation Envoyé par conconbrr
    En revanche a ta place et si ton équation n'est pas trop compliqué j'utiliserais plutôt un algo fait main pour la résoudre. J'utilisais en effet le solveur mais je me suis aperçu que selon la valeur initiale que tu rentrais, il ne te renvoyait pas exactement le même résultat!!!! (à moins d'avoir une solution exacte)
    le solveur s'arrête quand il approche la solution.
    en fait il compare le résultat du calcul à une valeur très faible 10^-6 ou -7
    par exemple.
    si le calcul est très sensible les racines peuvent présenter un écart un peu plus important mais minime.
    en fonction de la valeur de départ, il peut s'arrêter effectivement sur des valeurs différentes mais très voisines, quand il retrouve la même racine, il est évident que s'il trouve une autre racine il va la donner.
    Si le solveur est utilisé normalement (optimisation économique de type programmation linéaire) il renvoie la réponse correcte.
    Pour les racines de fonction la fonction valeur cible (goalseek) donne de meilleurs résultats, elle dispose d'une valeur de départ optionnelle.
    Si on tient à utiliser le solveur quand on a trouvé une racine, on peut ajouter aux contraintes différentes de cette valeur.
    Par contre on n'est plus en programmation linéaire, puisque la fonction sous jacente est exponentielle.

  12. #12
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Ouep suis bien d'accord. Mais comme tu l'as dit, même si la différence est minime elle existe. Et puis tout dépend de la précision cherchée sur le résultat, en particulier quand tu te sers de la valeur trouvée comme point de départ d'une nouvelle itération!!

    je t'assure qu'à la 2000ème itération le résultat n'a plus rien à voir avec ce que tu cherches...

Discussions similaires

  1. utiliser le solveur excel avec vba
    Par tallent_e dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/12/2011, 20h12
  2. Solveur Excel VBA sans cellules
    Par Piof55 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/07/2011, 21h16
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  5. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo