Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[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+
 
Réactions: mth

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) .

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

Pièces jointes

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

Paritec

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

Bonjour à Tous Michel en plus le forum
bon parfait c'est exactement ce que je voulais obtenir
merci pour tout et à tous
a+
papou
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…