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 :

Lancer une macro après un résultat donné par le Solver


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Lancer une macro après un résultat donné par le Solver
    Bonjour à tous,

    J'ai une macro qui permet de déclencher le Solver pour résoudre une équation selon des variables. Le résultat est donné dans une cellule A1.

    ça marche très bien, sauf que je souhaiterai lancer une autre macro une fois que le resultat est donné en A1.

    J'utilisais jusqu'à présent la procédure worksheet calculate qui permet de détecter le changement de valeur dans une cellule selon le code issu de ce site: http://xcell05.free.fr/pages/prog/ev....htm#Calculate



    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    ' Dans le module objet de Feuil1 :
     
    Public ValPrec
     
    Private Sub Worksheet_Calculate()
      Vérif
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
      Vérif
    End Sub
     
    Private Sub Vérif()
      If VarType(Range("A1")) = VarType(ValPrec) Then _
        If ValPrec = Range("A1") Then Exit Sub
      MsgBox "Cellule A1 passe de " & CStr(ValPrec) & _
        " vers " & CStr(Range("A1"))
      ValPrec = Range("A1")
    End Sub
     
    ' Dans le module de code ThisWorkbook :
     
    Private Sub Workbook_Open()
      Feuil1.ValPrec = Feuil1.Range("A1")
    End Sub

    ça marche très bien si je n'utilise pas le solver.

    En fait, le Solver "cherche" la valeur la plus approchée pour résoudre une equation, il balaie donc une plage de valeur.
    Cela prend très peu de temps, mais lorsque l'on dit à Excel "lance la macro si la cellule A1 change de valeur", il ne va pas "attendre" que le Solver ait terminé et va lancer la macro dès les premieres valeurs que le Solver balaie et qui sont visibles en A1.

    Par exemple, lorsque je lance le solver, en A1 va s'afficher très vite les nombres de 1 à 10 pour faire simple, et le resultat est 10. Il ne passe pas directement de 1 à 10. Cela veut dire que ma macro se lancera dès qu'il détectera un changement de valeur dans A1, c'est à dire quand il passera de 1 à 2 et non quand A1 sera égale à 10.

    Comment résoudre ce problème?
    peut on imaginer une détection de variation de valeur dans une cellule et quand elle ne varie plus, alors on peut lancer la macro?

    ou alors il y a plus simple?


    merci à tous!

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Le solveur travaille en B1, quand il finira, tu copie cette valeur en A1

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    bonjour,

    Le but est que cela se lance automatiquement, sans mon intervention.
    S'il travaille en B1, veux tu dire qu'en A1 je rentre simplement A1=B1 ou que je copie la valeur manuellement?

    merci

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    non, à la fin du code du solveur tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").value=Range("B1").value

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    merci!

    je vais tester et je vous tiens au courant.

    cordialement

Discussions similaires

  1. [OL-2010] lancer une macro APRES reception d'un mail
    Par sharox dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 01/06/2015, 19h53
  2. Lancer une macro depuis un control créé par macro
    Par totozor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2015, 15h45
  3. Réponses: 4
    Dernier message: 28/05/2010, 17h11
  4. [AC-2000] Automation avec Excel : lancer une macro qui trie les données
    Par fredschmidt dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/09/2009, 14h47
  5. Lancer une macro vba par menu
    Par jedwiller dans le forum Access
    Réponses: 3
    Dernier message: 09/05/2006, 16h19

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