Rester sur la page lors de l'exécution d'une Macro avec Power Query

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.

Comment y remédier?
Code à exécuter en premier:

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:

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.

Bonsoir excelator26

Le CROSS POSTING est une habitude à bannir, ou merci de le spécifier

Sujet déjà déposé ici https://excel-downloads.com/threads/rester-sur-la-page-en-cours-lors-de-lexecution-dune-macro-avec-p...

et peut-être ailleurs...

Merci de LIRE la CHARTE de ce FORUM SVP ou il est indiqué

Les autres règles à respecter

  • Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).

Si vous n'avez pas de réponse, c'est que le sujet ne passionne pas, d'autant plus que vous seul pouvez avoir accès à la page de l'URL

Bonne soirée

Bonsoir,

en effet, le cross posting n'est pas cool, on se casse parfois la tête pour rien si la réponse a été donnée ailleurs.

Pour votre 2è code, essayez ce qu'il y a dans le 1er : mettre Application.ScreenUpdating = False au début et Application.ScreenUpdating = True à la fin.

Bonjour à tous,

Tout d'abord, désolé pour le cross posting. Je ne savais pas pour cette règle.

Merci pour la suggestion @Doux_Rêveur. Je vais essayer.

Cordialement.

Bonjour

J'utilise tous les jours des macros pour actualiser des tableaux sans qu'Excel affiche les onglets associés (parfois les onglets en question sont masqués)

Sub d'actualisation générique

Sub Actualise(Nom)
    Range(Nom).ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub

puis dans mon code

...
 Actualise ("Tableau1")
 Actualise ("Tableau2")
...

comme les tableaux ont un nom unique dans le classeur, il n'est pas nécessaire de préciser l'onglet

Stéphane

Bonjour à tous,

@Doux Rêveur, j'ai essayé ta suggestion, mais ça ne marche toujours pas.

Stéphane, suggestion bien reçu, aussi l'ai je appliqué comme tel, mais les feuilles concernées s'affichent toujours même avec le réglage Application.ScreenUpdating False/True :

 Sub Actualise(Nom)
    Range(Nom).ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub

Sub RefreshOk()
Actualise ("Op_Bque__2")
Actualise ("Engagement__2")
End Sub

J'ai bien écrit ton code ci-dessus ?

Cordialement

Re,

Pas certain que ce ne soit pas une spécificité des versions Excel antérieures

Pourquoi ne pas masquer la feuille avant actualisation de son TCD pour voir

A+

Bonjour,

Pourquoi ne pas masquer la feuille avant actualisation de son TCD pour voir

Finalement, c'est ce que je vais faire en attendant d'avoir une version d'excel plus récente.

Merci à tous!

Cordialement.

Rechercher des sujets similaires à "rester page lors execution macro power query"