Bonjour,
Je viens demander de l'aide à propos de ce code VB Excel sur lequel je buche depuis un certain temps.
Je veux exécuter une série de Macros avec la fonction Call tout en restant sur la feuille actuelle (mode silencieux); ne pas afficher (ou parcourir) les feuilles concernées par le code car ne souhaitant pas que ces feuilles soient vues.
Le souci est lié à la Macro qui actualise les données dans les tableaux Excel avec les requêtes Power query; quoi que je fasse, ces tableaux de données s'affichent toujours comme le montre cette vidéo: https://jumpshare.com/s/NH7nsQ6I2S8X7oWFWCTN
Comment y remédier?
Code à exécuter en premier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Dim RunTime As Double Sub RunFirstMacro() Dim StartingSheet As Worksheet Set StartingSheet = ActiveSheet Dim Response As Integer Response = MsgBox("Are you sure you want to run this macro? This action cannot be undone. Temps estimé: 05 minutes", _ vbYesNo + vbQuestion + vbDefaultButton2, "Confirm Execution") If Response = vbNo Then Exit Sub End If Application.ScreenUpdating = False Call RefreshQueryTable Call InsertionSommeSiEnsCAClientsJAN Call InsertionSommeSiEnsRGTClientsJAN Call InsertionSommeSiEnsENGFssJAN Call InsertionSommeSiEnsPAYFssJAN StartingSheet.Activate Set StartingSheet = Nothing MsgBox "First macro has finished! Le processus va maintenant ajuster les colonnes. Cliquez sur Ok. Merci de patienter encore une dizaine de secondes." RunTime = Now + TimeValue("00:00:02") Application.OnTime RunTime, "RunSecondMacro" Application.ScreenUpdating = True End Sub
Code pour rafraîchir les tableaux des données (Power query) posant problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub RefreshQueryTable() ThisWorkbook.Sheets("Engagements").ListObjects("Engagement__2").QueryTable.Refresh BackgroundQuery:=False ThisWorkbook.Sheets("Op_Bque").ListObjects("Op_Bque__2").QueryTable.Refresh BackgroundQuery:=False ThisWorkbook.Sheets("CLOTURE_C.A._JAN").ListObjects("Fact_Clts_Jan").QueryTable.Refresh BackgroundQuery:=False ThisWorkbook.Sheets("CLOTURE_CAISSE_JAN").ListObjects("Tableau_DonnéesExternes_1").QueryTable.Refresh BackgroundQuery:=False End Sub
Au besoin, je peux joindre les fichiers Excel avec tous les codes.
Cordialement.




Répondre avec citation
Partager