Tagged: VBA Power Query
- This topic has 4 replies, 3 voices, and was last updated 8 years ago by
Consultant No.24.
-
AuthorPosts
-
5 June 2018 at 2 h 04 min #46518
eliecahen
ParticipantBonjour,
J’ai un fichier excel proteger, relier a d’autres excel par power query.
Je cherche un moyen d’actualiser les donnes par vba a l’ouverture du fichier.
Cependant si j’ecritssub R_PQ()
ThisWorkbook.Unprotect (“3021”)
ThisWorkbook.refreshAll
ThisWorkbook.protect (“3021”)
End SubL’actualision s’arrete
quelqu’un a une ideeMerci
7 June 2018 at 1 h 56 min #46571Mahaitia
ParticipantBonjour
Selon mes expériences, on ne peut pas déverrouiller une feuille via une macro. Sinon, tu peux toujours actualiser tes tableaux, connexions, TCD si ceux-ci ne se trouvent pas dans des champs verrouillés.
je te conseille plutôt de mettre les éléments dans un onglet masqué non-verrouillé.pour actualiser l’exhaustivité de tes requets powerquery, utiliser plutôt une boucle:
sub R_PQ() for i = 1 to thisworkbook.connections.count thisworkbook.connections(i).refresh next end subBonne chance!
8 June 2018 at 3 h 31 min #46590eliecahen
ParticipantMerci de votre réponse.
Le vrai probleme est que si j’actualise par macro,l’actualisation s’arrete quand le script vba se termine et non quand l’actualisation est terminé, donc je recois des erreurs d’actualisations dans mes requetes.
Vous avez une idee que le script ne s’arrete pas pendant x temps?
Merci10 June 2018 at 7 h 12 min #46595eliecahen
Participantj’ai trouve une solution…
Couper la macro en 2`Sub DataRefresh()
‘ ActiveSheet.Unprotect “123”
ActiveWorkbook.RefreshAll
Application.OnTime Now + TimeValue(“00:00:01”), “DataRefresh2”
End Sub
Sub DataRefresh2()
If Application.CommandBars.GetEnabledMso(“RefreshStatus”) Then
Application.OnTime Now + TimeValue(“00:00:01″), ” DataRefresh2″
ElseEnd If
End Sub10 June 2018 at 9 h 19 min #46596Consultant No.24
ParticipantBonjour,
Votre 1ere macro est tout à fait correct et le problème vient du type de mise à jour de Power Quercy. Par défaut cette actualisation se fait en arrière plan, du coup le code lance l’actualisation puis se poursuit. Bien sûr vous pouvez utiliser la temporisation comme dans votre 2e macro. Mais le mieux c’est de décocher l’actualisation des requêtes. Ainsi votre 1ère macro est amplement suffisante.
Cathy Monier -
AuthorPosts
- You must be logged in to reply to this topic.




