Bonjour à tous,

Dans un classeur Excel, j'ai deux tableaux provenant de connexions externes.
Je ne souhaite pas que ces dernières soient mises à jours à l'ouverture du classeur mais plutôt sur demande de l'utilisateur.
J'ai donc créé une procédure permettant de faire cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Sub updateData()
  shNouveauxDCL.ListObjects(1).QueryTable.Refresh BackgroundQuery:=False
  shRealisationsASS.ListObjects(1).QueryTable.Refresh BackgroundQuery:=False
 
  shMaj.Range("updateDate").Value = "Date des données : " & getUpdateDate()
End Sub
Jusqu'ici pas de soucis, le code fonctionne.
Toutefois, les deux lignes .QueryTable.Refresh peuvent prendre un peu de temps et je souhaiterai afficher un message pendant l'exécution du code.

J'ai testé 2 solutions :
  1. Via un shape que j'affiche temporairement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub updateData()
      shMaj.Shapes("loader").Visible = msoTrue
        ' CODE
      shMaj.Shapes("loader").Visible = msoFalse
    End Sub
  2. Via un onglet que j'affiche temporairement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub updateData()
      shLoader.Select
        ' CODE
      shMaj.Select
    End Sub

Ces 2 solutions fonctionnent en pas-à-pas mais pas en exécution globale.

J'ai une 3iem idée en tête consistant à utiliser un userForm (pas encore tester mais ça devrait fonctionner) mais je ne veux pas charger le projet VB inutilement.

Avez-vous des idées pour m'aiguiller vers une solution ?
Merci d'avance pour vos retours,