XL 2016 Comment raffraîchir querytable vba d'une feuille

Emile63

XLDnaute Junior
Bonjour à tous,

Sur un classeur excel j'ai plusieurs requêtes disséminés à travers plusieurs feuilles.
Je souhaiterais - par VBA - actualiser toutes les requêtes qui se trouvent sur une seule feuille
et non pas celles de tout le classeur (Gain de temps).
Je brode autour de ce bout de code mais ça ne fonctionne pas... :(
-------------------------------------------------------
Sub test()
For Each qt In Worksheets(21).QueryTables
qt.Refresh
Next
End Sub
-------------------------------------------------------
Je vous remercie d'avance pour votre aide.
Emile
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Emile63

Je n'ai pas testé mais ce bout de code semble revenir souvent sur le net
Peut-être déclarer la variable "qt" correctement :

Sub Test()
Dim qt As QueryTable

J'ai vu aussi cet argument ajouté au Refresh
qt.Refresh BackgroundQuery:=False

Es-tu sure de l'index 21 de ta Worksheet ? (MsgBox ActiveSheet.Index)

Si ça peut te faire avancer...
@+Thierry
 

Emile63

XLDnaute Junior
Bonjour Thierry et merci pour ton aide.

J'ai corrigé ce code (voir ci-dessous) en suivant ton conseil, mais ça ne fonctionne toujours pas. :(
J'ai également créer la macro avec l'enregistreur pour un seul Query (voir après) qui fonctionne pour voir les différences...
Ce qui est curieux c'est que la message box count me retourne zéro... Ce qui expliquerait pourquoi le premier code ne fonctionnerait pas, s'il trouve zéro. Le problème c'est que des connexions internet à la bourse il y en a 8, donc elles existent et fonctionnent par elles mêmes.
----------------------------------------------------------------------------------
Sub ActualiserFeuille() ' Ne fonctionne pas
Dim qt As QueryTable
MsgBox ActiveSheet.QueryTables.Count ' Réponse: 0 ??, alors qu'il y en a 8
For Each qt In Worksheets(23).QueryTables ' Il s'agit de la Feuil23
qt.Refresh BackgroundQuery:=False
Next
End Sub
----------------------------------------------------------------------------------
Sub AvecEnregistreur() ' Fonctionne pour 1 seule requête
Sheets("Bourses").Select ' Feuil23
Range("Zinc[[#Headers],[Bid (US$ / Tonne)]]").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
-----------------------------------------------------------------------------------

Merci encore pour vos solutions.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Emile

Je n'utilise pas de QueryTable depuis "un siècle"... Je n'ai plus d'idée là et je ne peux pas simuler la situation.
Le Count à Zéro est en effet étrange en tout cas, la différence avec la Macro enregistrée c'est qu'elle parle de "ListObject" comme étant l'objet contenant QueryTable... Comme si sur ta boucle il ne les identifie pas... pour retouner Zéro...

J'essaierai :
Sub ActualiserFeuille() ' Ne fonctionne pas
Dim qt As QueryTable
MsgBox ActiveSheet.ListObject.QueryTables.Count ' Réponse: 0 ??, alors qu'il y en a 8
For Each qt In Worksheets(23).ListObject.QueryTables ' Il s'agit de la Feuil23
qt.Refresh BackgroundQuery:=False
Next
End Sub

Mais aucune garantie !

Bon courage
@+Thierry

EDIT : en relisant Worksheets(23).QueryTables ' Il s'agit de la Feuil23
Es-tu sûr que c'est l'index 23, Feuil23 ne veux pas forcément dire que la feuille se situe en 23ième position du classeur... (MsgBox ActiveSheet.Index)
 
Dernière édition:

Emile63

XLDnaute Junior
Bonjour Thierry et merci pour ton aide.
Je suis de ton avis, cette "ListObject" doit être ce qui m'empêche d'atteindre mon but...
Malheureusement ça ne fonctionne toujours pas.
-----------------------------------------------------
Erreur 438
Propriété ou méthode non gérée par cet objet
-----------------------------------------------------
La MSG ne les trouve pas, et la boucle non plus. :(
Quant à l'index, je l'ai vérifié et corrigé, car j'ai plusieurs feuille avec des Requêtes, il n'en à trouvé aucune (index: 1,2,3,4,5,6 etc..)
Je te remercie tout de même pour ton aide, et laisse ma question ouverte au cas ou cela inspirerait quelqu'un ;)
Très bonne journée à tous.
 

Discussions similaires

Réponses
3
Affichages
591

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise