[Resolu]Comment être sur que après "activeworkbook.refreshall " que l'actualisati..

Paritec

XLDnaute Barbatruc
Bonjour à tous,
je souhaite dans une macro mettre à jour ma base avec un activeworkbook.refreshall mais actuellement quand j'insère cette demande dans la macro, en début de macro naturellement, la mise à jour se fait mais quand tout le déroulement de la macro est terminé ???
J'ai oublié quoi?? c'est pour actualiser trois requêtes Web avant de lancer mon traitement des données.
dans l'attente de vous lire
a+
papou:)
 
Dernière édition:
G

Guest

Guest
Re : Comment être sur que après "activeworkbook.refreshall " que l'actualisation est

Bonjour Papou,

Pour aller au plus simple, tu peux mettre ceci dans ton module de feuille qui contient la queryTable

En supposant que la WebQuery s'appelle "MaQueryTable":
VB:
Dim WithEvents MyWebquery As QueryTable
Private Sub MyWebquery_AfterRefresh(ByVal Success As Boolean)
    LancerLaMacro
End Sub
Private Sub Worksheet_Activate()
 Set MyWebquery = Me.QueryTables("MaQueryTable")
End Sub

ce pour chaque QueryTable. Ou alors faire un module de class avec une collection de QueryTables.

A+
 

tototiti2008

XLDnaute Barbatruc
Re : Comment être sur que après "activeworkbook.refreshall " que l'actualisation est

Bonjour Paritec, Bonjour Hasco :)

Peut-être mettre la propriété Backgroundquery de tes 3 requêtes (queryTable) à False, il devrait attendre la fin de l'actualisation avant de passer à la suite du code

Edit : @Hasco : toujours intéressant de voir comment gérer des évènements supplémentaires, je garde ton code sous le coude, merci ;)
 
Dernière édition:
G

Guest

Guest
Re : Comment être sur que après "activeworkbook.refreshall " que l'actualisation est

Re,

Tototiti:)

Papou@ Si ta macro doit attendre le rafraîchissement des 3 querytable: dans le fichier joint, un module de classe QueryTable qui incrémente une propriété publique du classeur "RefreshCount" (module1) qui émet un msgbox lorsque les 3 queryTables sont rafraîchies.

A+
 

Paritec

XLDnaute Barbatruc
Re : Comment être sur que après "activeworkbook.refreshall " que l'actualisation est

Bonjour Hasco:) Tototiti:) le forum
merci pour vos réponse je teste de suite , mais tu as parfaitement saisi le pourquoi Hasco
je teste et je vous redis merci beaucoup
a+
Papou
 

MJ13

XLDnaute Barbatruc
Re : Comment être sur que après "activeworkbook.refreshall " que l'actualisation est

Bonjour à tous

Sinon, vous ne pouvez pas mettre à jour les requêtes Web automatiquement à l'ouverture du classeur (voir Image dans les propriétés) :confused:.

Sinon, un petit fichier nous permettrait d'y voir plus clair :).
 

Pièces jointes

  • ReqWebPropriété.jpg
    ReqWebPropriété.jpg
    100.2 KB · Affichages: 167
G

Guest

Guest
Re : [Resolu]Comment être sur que après "activeworkbook.refreshall " que l'actualisat

Bonjour à tous,

@Papou, voici la réponse à ton MP.

Les mp ne sont pas là pour solliciter les intervenants au sujet des fils de discussion.(reste dans le fil)

C'est l'évènement de la classe qui incrémente la propriété RefreshCount.
Code:
Private Sub moQuery_AfterRefresh(ByVal Success As Boolean)
RefreshCount = RefreshCount - Success
End Sub

Success est passée par Excel à l'évènement AfterRefresh. Comme c'est un boolean true=-1 et false = 0)

RefreshCount = RefreshCount - Success
equivaut à
RefreshCount = RefreshCount +1 (Success= vrai) -(-1)=+1
ou
RefreshCount = RefreshCount -0 (Succes = false)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 312
Messages
2 087 162
Membres
103 484
dernier inscrit
maintenance alkern