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 :

Attendre que la connection query soit terminée avant de poursuivre la code [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut Attendre que la connection query soit terminée avant de poursuivre la code
    Bonjour,

    Comme l'indique le titre, j'ai une requête "excel query" sur les données présente dans un site web.

    J'effectue un code qui rafraichit les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Dim Connection As WorkbookConnection
        For Each Connection In ThisWorkbook.Connections
            Connection.Refresh
        Next Connection
    Ce que je souhaite faire c'est lancer une macro qui traite les valeurs récupérées une fois le rafraichissement des données terminé.

    Or cela prend environ 5 secondes et les données sont en train d'être mise à jour que la macro suivante est lancée.

    Je souhaite tester si le refresh est bien terminé avant de lancer le reste du code. J'ai rien trouvé de concluant sur google.

    Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    et oui c'est un peu le soucis avec query c'est difficile de gerer les ready state c'est pour cela que je prefere les requete avec l'object(Microsoft.xmlhttp)

    cela dit tu pourrais te contenter d'utiliser l'evenement change des sheets mais dans le module thisworkbook afin de gérer tout les feuilles

    a mediter
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut
    Salut à toi patricktoulon,

    Merci pour ton aide,

    Alors j'ai testé avec le code ci-dessous. Un peu du bricolage mais au moins ça permet d'avoir une fin marquée de la MaJ des données. La msgbox est la pour le debug et marquer la fin du refresh.

    Je ne connais pas l'object(Microsoft.xmlhttp),la requête que j'ai faite est toute simplement une à la main que j'ai faite une première fois et la je veux juste la refresh à chaque début de macro.

    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
     
    Sub RefreshPQConnectionsandSave()
        For Each cn In Application.ActiveWorkbook.Connections
         isPowerQueryConnection = InStr(1, cn.OLEDBConnection.Connection, "Provider=Microsoft.Mashup.OleDb.1") > 0
         If isPowerQueryConnection Then
            cn.OLEDBConnection.BackgroundQuery = False
            cn.Refresh
         End If
        Next cn
         Application.OnTime DateAdd("s", 10, Now), "SaveIt"
     
         MsgBox "terminado"
    End Sub
     
    Sub SaveIt()
         Application.ActiveWorkbook.Saved = True
    End Sub

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/03/2009, 13h16
  2. Attendre que tous mes invoke soient finis avant de fermer ma fenêtre
    Par Rodrigue dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 20/02/2008, 20h14
  3. Réponses: 19
    Dernier message: 13/01/2008, 23h33
  4. Réponses: 6
    Dernier message: 13/10/2007, 14h16
  5. Attendre qu'une tâche soit terminée avant d'en lancer une autre
    Par guidav dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/04/2007, 17h07

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