Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Evenement sur QueryTable.Refresh

2 réponses
Avatar
Stéphane Santon
Bonjour,

Lorsque l'on affecte une valeur à QueryTable.RefreshPeriod > 0,
la table est mise à jour périodiquement.

Comment exécuter automatiquement une fonction perso lorsque la table a
été mise à jour ??

--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

2 réponses

Avatar
Stéphane Santon
Bonjour,

Trouvé : Créer un module de classe. Ci-dessous extrait de l'aide .

Utilisation d'événements avec l'objet QueryTable

Avant de pouvoir utiliser des événements avec l'objet QueryTable, vous
devez créer un nouveau module de classe et déclarer un objet QueryTable
avec des événements. Par exemple, supposons que vous ayez créé un
nouveau module de classe appelé ClsModQT. Ce module contient le code
suivant :

Public WithEvents qtQueryTable As QueryTable

Après avoir déclaré le nouvel objet en utilisant des événements, il
s'affiche dans la liste déroulante Objet du module de classe.

Toutefois, avant l'exécution des procédures, vous devez lier l'objet
déclaré dans le module de classe à l'objet QueryTable spécifié. Pour ce
faire, vous pouvez entrer le code suivant dans le module de classe :

Sub InitQueryEvent(QT as Object)
Set qtQueryTable = QT
End Sub

Après avoir exécuté cette procédure d'initialisation, l'objet déclaré
dans le module de classe pointe vers l'objet QueryTable spécifié. Vous
pouvez initialiser l'événement dans un module en appelant cet événement.
Dans cet exemple, la première table de requête de la feuille de calcul
active est liée à l'objet qtQueryTable.

Dim clsQueryTable as New ClsModQT

Sub RunInitQTEvent
clsQueryTable.InitQueryEvent _
QT:¬tiveSheet.QueryTables(1)
End Sub

Vous pouvez écrire d'autres procédures événement dans la classe de
l'objet. Lorsque vous cliquez sur le nouvel objet dans la zone Objet,
les événements valides pour cet objet sont affichés dans la liste
déroulante Procédure.


Lorsque l'on affecte une valeur à QueryTable.RefreshPeriod > 0,
la table est mise à jour périodiquement.
Comment exécuter automatiquement une fonction perso lorsque la table a
été mise à jour ??


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

Avatar
michdenis
Bonjour Stéphane,

Tu peux essayer ceci :

Il ne te reste plus qu'à lancer "RoutineMiseAjour"

'---------------------
Sub MiseAJourQueryTable()

Worksheets("Feuil1").QueryTables("sonNom_Ou_SonIndex").Refresh False
'Exécution de ta fonction personnalisée
RoutineMiseAjour

End Sub
'---------------------
Sub RoutineMiseAjour()
Application.OnTime Now + TimeValue("00:00:15"), "MiseAJourQueryTable"
End Sub
'---------------------


Salutations!


"Stéphane Santon" a écrit dans le message de news:
Bonjour,

Lorsque l'on affecte une valeur à QueryTable.RefreshPeriod > 0,
la table est mise à jour périodiquement.

Comment exécuter automatiquement une fonction perso lorsque la table a
été mise à jour ??

--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime