VBA : message d'attente pendant macro

Bonjour,

J'ai une macro assez longue, durant laquelle de nombreux écrans s'affichent de manière un peu....brouillonne (ouverture fermeture de plusieurs onglets, génération de codes couleur etc...)

Est-il possible au début de la macro de placer un msgbox qui masquerait tout ce qui se passe pendant la macro, en indiquant par exemple un message d'attente ?

D'avance merci.

Vincent

Bonjour,

Oui tu places au début de ta macro :

Application.ScreenUpdating = False

Et à la fin

Application.ScreenUpdating = True

Bonjour tous le monde,

Une proposition valable pour une seule macro si tu en as plusieurs ça va être plus compliqué sans voir ton fichier ou ton code

Sub VotreMacro()
     Application.ScreenUpdating = False
    ' Affiche un message d'attente
    MsgBox "Votre message d'attente ici...", vbInformation, "Traitement en cours"

    ' Votre code de macro commence ici
    ' ...

    ' Fin de la macro
    Application.ScreenUpdating = True
End Sub

bonjour,

@Stepaustras, un msgbox arrête la macro et n'a pas vraiement une valeur ajoutée. Moi, je préfère utiliser le statusbar pour montrer en même temps le progrès. La mise à jour de ce statusbar ne sera pas à chaque boucle, mais par exemple tout les 5 secondes. N'oubliez pas à vider ce statusbar après l'exécution de la macro.

57vmercy1.xlsb (24.89 Ko)

Un exemple assez simple.

Dans le statusbar, on peut ajouter de l'information supplémentaire (ici par exemple le nom de la feuille, si ça vous sert à ...)

Sub vMercy()

     Application.ScreenUpdating = False 'essayer avec True et False

     cnt = Sheets.Count
     For i = 0 To 100
          If i > 1 Then Sheets((i - 1) Mod cnt + 1).Select
          Application.Wait Now + TimeSerial(0, 0, 1) 'attendre 1 sec = pour évoquer une macro longue
          If i Mod 4 = 0 Then
          s = ActiveSheet.Name
          Application.StatusBar = "Loop " & Format(i, "#,###") & " de 100 dans macro X, " & s: DoEvents 'de temps en temps une mise à jour pour savoir le progrès
     End If
     Next

     Application.StatusBar = False 'RAZ du satusbar
End Sub
Rechercher des sujets similaires à "vba message attente macro"