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 :

Appel au Solver


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Appel au Solver
    Bonjour,

    je ne comprends pas pourquoi lorsque j'appelle le solver via VBA, ce dernier ne prend pas en compte toutes les contraintes reprises dans le code. Il se comporte comme si ces contraintes n'existaient pas, et effectue la suite normalement. Si une bonne âme pouvait m'aider, je peux éventuellement lui envoyer l'ensemble du code... Voici le bout de code qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SolverReset
     
    SolverOk SetCell:=Cells(a, b), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(a, b - 4), Cells(a + NA - 1, b - 4)) _
            , Engine:=1, EngineDesc:="GRG Nonlinear"
     
    SolverAdd CellRef:=Range(Cells(a, b - 4), Cells(a + NA - 1, b - 4)), Relation:=3, FormulaText:="0"
     
    'Contrainte sautée (?)
    SolverAdd CellRef:=Cells(a + NA, b - 4), Relation:=2, FormulaText:=Cells(a + NA, b - 3)
     
    'Contrainte sautée (?)
    SolverAdd CellRef:=Cells(a + 1, b), Relation:=2, FormulaText:=Cells(a - 4 - NPF - ((i - 1) * (5 + NA)) + (i - 1), b - 3)
     
    SolverOk SetCell:=Cells(a, b), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(a, b - 4), Cells(a + NA - 1, b - 4)) _
            , Engine:=1, EngineDesc:="GRG Nonlinear"
     
    SolverSolve

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    As- tu dans ton code des gestions d'erreur comme

    ON ERROR RESUME NEXT
    As tu essayé de remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaText:=Cells(a + NA, b - 3)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaText:=Cells(a + NA, b - 3).text

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    je n'ai pas de gestion d'erreur.

    Lorsque je rajoute '.text' comme proposé, il ne prend en compte que deux contraintes sur trois (je ne comprend tjs pas pourquoi il saute la 3e) et de plus, il remplace ma référence à la cellule par un nombre. Autrement dit, le cotè droit de ma contrainte n'est plus égal à la valeur se trouvant dans une cellule (à laquelle je suis sensé faire référence) mais à un entier (3 285 156 en l'occurence).

    Je suis au bord du suicide... ;-) je ne comprends vriament pas

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Et avec .VALUE ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    j'ai essayé différents cas de figures et au final je suis encore plus perdu : si je mets

    * .text à la fin de toute les contraintes, il ne prend en compte AUCUNE contrainte (y compris la contrainte 1, qu'il prenait préalablement en compte)

    * .text à la fin de la contrainte 2, le solver ne tient compte d'aucune des deux contraintes dont je parlais

    * .text à la fin des contraintes 2 et 3, alors il prend en compte la contrainte 2 mais pas la 3. Il tient compte de la contrainte 2 en transformant la valeur a obtenir (qui est de 0.003745774) par 3745774, autrement dit , il la multiplie par 1 milliard

    * . value à la fin de toutes les contraintes, il ne prend tjs que la contrainte 1 en compte (ce qui revient à mon problème de base)

    * . value à la fin de la contrainte 2, il ne prend tjs que la contrainte 1 en compte (ce qui revient à mon problème de base)

    * . value à la fin des contraintes 2 et 3, il ne prend tjs que la contrainte 1 en compte (ce qui revient à mon problème de base)

    à devenir fou...

Discussions similaires

  1. [VB6] [Langage] VB6 et les appels de dll
    Par Dave63 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/01/2003, 18h20
  2. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48
  3. Réponses: 4
    Dernier message: 07/12/2002, 07h34
  4. Appel de procédure...
    Par AmaX dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2002, 17h48
  5. appel de fichier d'Aide
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 24/09/2002, 14h13

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