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 :

Code vba pour réactualiser une requete query [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut Code vba pour réactualiser une requete query
    Bonjour,

    J'ai repris un code vba qui à l'époque a été construit sur excel 2003.
    Et j'ai l'impression que sur Excel 2007 , ce code ne fonctionne pas.
    Ce code est un code vba qui réactualise une requete query.
    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub MAJ_All_Querys()
     
       Dim qt As QueryTable, qts As QueryTables
        Set qts = Sheets("feuil1").QueryTables
        For Each qt In qts
     
            qt.Refresh BackgroundQuery:=False
        Next
    End Sub
    Sur la ligne 4, aprés le . de Sheets("feuil1"), je n'aie pas l'arboresence des objets qui apparait.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je pense qu'il instancier une variable Worksheet avec la feuille souhaitée, et directement travailler avec ta variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Sh as Worksheet
    Set Sh = Thisworkbook.Worksheets("feuil1")
    EDIT : j'ai testé et en mettant la feuille sous variable, ça fonctionne

    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 MAJ_All_Querys()
        Dim qt As QueryTable, qts As QueryTables
        Dim Sh As Worksheet
     
        Set Sh = ThisWorkbook.Worksheets("feuil1")
        ' si tu mets un Sh. tu obtiens bien le menu déroulant !
        Set qts = Sh.QueryTables
     
        For Each qt In qts
            qt.Refresh BackgroundQuery:=False
        Next
     
        Set Sh = Nothing
        Set qts = Nothing
     
    End Sub

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    ce code fonctionne pourtant indifféremment de mon côté quelque soit la version d'Excel.

    Et pour le point c'est normal (cela le fait déjà dans la version 2003 !),
    mieux vaut utiliser le CodeName de la feuille de calculs (et là l'arborescence s'affiche …) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MAJ_All_Querys()
             Dim Qt As QueryTable
        For Each Qt In Feuil1.QueryTables
                 Qt.Refresh False
        Next
    End Sub
    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Super merci Marc-L et joe.levrai

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Conformément aux règles de ce forum :



    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    J'ai bien fait de ne pas cliquer sur "resolu"..
    J'ai parlé un peu trop vite

    le code de Marc-L et de celui de joe.levrai ne réactualisent pas ma requete query.
    Pour le code de Marc-L, le curseur saute la ligne 4
    Pour le code de joe.levrai , le cusrsue saute la ligne 11

    En résume, le curseur evite la ligne qui contient le Refresh..
    Je ne comprens pas pourquoi ?

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    La feuille désignée ne contiendrait pas de QueryTable !

    Et c'est simple à vérifier comme indiqué dans l'aide VBA, insérer cette ligne avant la boucle :

    MsgBox Feuil1.QueryTables.Count

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

Discussions similaires

  1. [XL-2010] Code vba pour extraire une chaîne spécifique de caractéres
    Par samy35 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/09/2013, 18h34
  2. Réponses: 2
    Dernier message: 14/10/2009, 08h57
  3. recherche du code VBA pour executer ma requete
    Par gwems dans le forum VBA Access
    Réponses: 28
    Dernier message: 19/03/2009, 23h26
  4. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48
  5. Réponses: 7
    Dernier message: 21/09/2006, 14h06

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