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 :

Probleme de "Pause"dans une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut Probleme de "Pause"dans une macro
    Bonjour,

    via une macro je recupere differentes données sur Bloomberg. Une fois les données recupérées, je fais executer une seconde macro ou je fais un copy paste specail value des données.

    Cela marche parfaitement.

    J'aimerais en fait "fusionner" les deux macros en une seule. Le probleme est de savoir a quel moment lancer le copy paste.

    J'ai essayé de faire un application.wait, mais le probleme est que cela gele tout le processus. En ce, meme la mise a jour des données Bloomberg.

    Comment faire pour que seule la macro soit suspendue le temps que les differentes données soient mises a jour sur le fichier afin de lancer (une fois toutes les données a jour) la derniere partie du code?

    Merci

  2. #2
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    As-tu essayé avec ?

    Domi2

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    peux tu m'expliquer svp?

    je ne maitrise pas trop en fait

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Regarde l'aide sur Doevents. (curseur sur le mot clef puis F1)
    Tu met juste la ligne
    Et cela donne la main au système pour faire ce qu'il a a faire avant de reprendre la macro.

    Du coup tu fait ton appelle suivit de doevents puis de la suite du programme
    Sur le doevents le système fait son boulot et ensuite il lit la suite de la macro

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    ok.

    mais le probleme est que je n'ai pas de processus a lancer pendant que les champs se downloadent.

    je voudrais simplement que la macro "attende"que tout soit disponible avant de faire un copy paste des données telechargées.

    suis un peu perdu

  6. #6
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je voudrais simplement que la macro "attende"que tout soit disponible avant de faire un copy paste des données telechargées.
    Alors essaie de placer ton instruction juste avant le copy paste.

    Domi2

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    apparement cela ne marche pas.

    la macro fait bien une "pause" dans son execution, mais les formules qui rappatrient les données bloomberg ne tournent pas. elles restent en "#N/A requesting"

  8. #8
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Pourrais-tu poster ton code ?

    Cela sera peut-être plus facile de t'aider.

    Domi2

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    voici le code en partie (sorry pour la mise en page)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sheets("fields").Select
     
    Cells(4, 3).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Cells(1, 1).Select
     
    Sheets("checks").Select
     
    Cells(4, 3).Select
    ActiveSheet.Paste
    Range(Cells(4, 3), Cells(4, 18)).Select
    Selection.AutoFill Destination:=Range(Cells(4, 3), Cells(max, 18))
    Cette partie recupere les champs bloomberg type dans l'onglet "fields"et les appliquent ensuite aux titres qui se trouvent sur l'onglet "checks"

    A ce moment, bloomberg doit mettre a jour les données.

    Jusqu'a present je laissais faire et je regardais qd tout etait mis a jour afin de lancer la seconde macro qui me permettait de faire une copier coller de toute la feuille "Checks" (utile pour pouvoir utiliser le fichier sur un pc que celui de bloomberg. Sans cela, si j'ouvre le fichier sur mon pc les données mettaient "#NAME?"vu que je n'ai pas de lien avec bloomberg (API ?)

    donc pour ne pas pousser sur deux boutons (je suis un faineant), j'ai mis un test dans une des cellules de la feuille "checks". Ce check me permet de savoi si tout est mis a jour. une fois tout a jour, la cellule indique "Bloomberg updated"

    donc dans le meilleur des cas, je dois faire en sorte que les liens bloomberg soient updatés avant de faire mon copy paste.

    Le probleme qd j'insere un Doevents (par exemple) est que la macro est toujours "active"(pas encore arrivé au end sub) . Ce qui fait que mes liens ne s'updatent pas. il faut pour cela que la macro soit terminée.

    comment faire pour que les liens se mettent a jour et qu'une fois fait la seconde macro soit lancée automatiquement?


    Je voudrais en fait faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Cells(2, 1) = "Bloomberg updated" Then
    Call macro_copy_paste
    Else
      'comment faire pour que la macro s'arrete pour laisser le temps a bloomberg de continuer a se mettre a jour???
    end if

  10. #10
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    je ne sais pas si cela peux aider mais un collegue m'a parlé du multi threadings...

    est ce que cela vous dit quelque chose? moi pas car suis novice de chez novice

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    1) VBA ne gère pas le "multi-threading" ! (à ouiblier, donc ...)
    2) Dans ton premier message, tu disais "marche parfaitement" en deux macros : montre-nous leur code et, surtout, celui de leur exécution.
    3) intéresse-toi à la fonction WaitForSingleObject de la libraiirie "kernel32" de l'Api de Windows.
    4) Nous n'avons pas vu la moindre ligne de ton code, notamment de celui utilisé pour le téléchargement (donc avant le Copy/paste) et il nous est dans ces conditions biern évidemment difficile de te conseiller en parfaite connaissance de cause !

  12. #12
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 30
    Par défaut
    Veuillez excuser ma connerie!

    je pense avoir trouver un autre moyen.

    A La fin de la macro1 j'appelle celle ou j'effectue le copier coller (appelé "final"). Et au debut de celle je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If Cells(2, 1) = "Bloomberg updated" Then
    je fais le copier coller 
     
    sinon 
     
    Else
    Application.OnTime Now + TimeValue("0:00:02"), "final"
     
    End If

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec une condition dans une macro
    Par majudis dans le forum IHM
    Réponses: 1
    Dernier message: 08/10/2010, 16h29
  2. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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