Macro: ouvrir, actualiser tout, sauver, fermer des classeurs

Bonjour,

Je débute en VBA, et je rame pour améliorer une macro, après de nombreuses recherches je me permets de solliciter la communauté.

Je dois ouvrir une dizaine de fichiers Excel 2013 qui contiennent plusieurs feuilles avec du Power Query et/ou des Tableaux croisés dynamiques.
Ils se mettent à jour à l'ouverture, mais ne s'actualisent pas en arrière plan.
Toutes les feuilles doivent s'actualiser, et les fichiers doivent être sauvegardés.

Certains fichiers bloquent car une autre action est en cours, de plus je ne sais pas optimiser les actions.

Voici les prémices de mon code:

1 Sub majFichiersInvest()
2
3
4 Workbooks.Open Filename:="C:\1.xlsx"
5 ActiveWorkbook.RefreshAll
6 ActiveWorkbook.Save
7 ActiveWindow.Close
8
9 Workbooks.Open Filename:="C:\2.xlsx"
10 ActiveWorkbook.RefreshAll
11 ActiveWorkbook.Save
12 ActiveWindow.Close
13
14
15 End Sub

Cela me serait très agréable d'avoir de l'aide et des conseils.

Merci merci et à bientôt

Hello,

Que veut dire :

mais ne s'actualisent pas en arrière plan.

Normalement le refreshall actualise tout

Workbook.RefreshAll, méthode (Excel)

Article

11/04/2022

2 minutes de lecture

Actualise toutes les plages de données externes et les rapports de tableau croisé dynamique dans le classeur spécifié.

Dans connexion, j'ai décoché Actualisation en arrière-plan.

Et tu as testé ton code ? Il me semble correct

Du coup je dois écrire 12 x la même chose, si j ai 12 fichiers?

Comme tu es debutant oui je te conseil de faire ça, en changeant le chemin à chaque fois.

OK merci Rag02700 je vais tester cela.

Bonne soirée

Bonjour,

Si je lance ce code:

Workbooks.Open Filename:="T:\1.xlsx"
ActiveWorkbook.RefreshAll

L'actualisation est OK.

Si je lance ce code:

Workbooks.Open Filename:="T:\1.xlsx"
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWindow.Close

L'actualisation en se fait pas, comment faire pour lui laisser le temps d'actualiser tout?

Merci et bonne journée

Hello,

essaye ceci :

Workbooks.Open Filename:="T:\1.xlsx"
ActiveWorkbook.RefreshAll
doevents
ActiveWorkbook.Save
ActiveWindow.Close

OK merci, je vais tester.

Bonjour,

J'ai mis ces paramètres de connexion pour tous les fichiers qui doivent se mettre à jour, et ma macro à l'air de fonctionner.

image

Je continue à l'améliorer et à bientôt merci!

Rechercher des sujets similaires à "macro ouvrir actualiser tout sauver fermer classeurs"