Afficher un message pendant une macro

Anonyme
2020-08-13T16:50:23+00:00

Windows 10 / Excel 2013 / Macro VBA

Bonjour,

Comment afficher automatiquement sur la feuille active, un message pendant l’exécution d'une macro ? (Ex. : "Mise à Jour en cours. Patientez...").

Le dit message devant bien évidement disparaitre automatiquement à la fin de l'exécution de la Macro concernée.

J'ai fait plusieurs essais qui fonctionne à condition d'exécuter la Macro en mode "Pas à Pas".

Merci pour votre réponse.

Bien cordialement.

Georges

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2020-08-14T18:14:28+00:00

Oui. Avec ton code, VBA utilise le processeur a plein régime et l'affichage ne peut pas se faire. Ecris plutôt :

Sub Test_Affichage()

    Call Affichage_Msg_MàJ_M

    Application.Wait Now + TimeValue("00:00:05")

    Call Suppression_Msg_MàJ_M

End Sub

Ou alors :

Sub Test_Affichage()

    Call Affichage_Msg_MàJ_M

    T0 = Now

    T1 = T0 + TimeValue("00:00:05")

    Do While T0 < T1

        DoEvents

        T0 = Now

    Loop

    Call Suppression_Msg_MàJ_M

End Sub

"DoEvents" rendant la main au système pour exécuter les tâches en attente.

Daniel

Cette réponse a-t-elle été utile ?

3 personnes ont trouvé cette réponse utile.
0 commentaires Aucun commentaire

3 réponses supplémentaires

  1. Anonyme
    2020-08-15T11:00:31+00:00

    Bonjour Daniel,

    J'ai incorporé la fonction "DoEvents" dans mes différentes procédures d'affichage et cela fonctionne parfaitement.

    Merci pour cette aide.

    Cordialement.

    Georges

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  2. Anonyme
    2020-08-14T17:53:06+00:00

    Bonjour Daniel,

    Merci pour ta réponse. Je n'ai jamais utilisé les fonctionnalités de UserForm. J'ai donc créé le message UserForm "Msg_MàJ_M" que j'affiche et efface sans problème avec les commandes VBA :

    Affichage :

    Sub Affichage_Msg_MàJ_M()    Load Msg_MàJ_M    Msg_MàJ_M.ShowEnd Sub

    Suppression :

    Sub Suppression_Msg_MàJ_M()

    Unload Msg_MàJ_M

    End Sub

    Mais lorsque j'incorpore ces commandes dans une procédure de Test de 5 secondes :

    Sub Test_Affichage()

    Call Affichage_Msg_MàJ_M

    T0 = Now

    T1 = T0 + TimeValue("00:00:05")

    Do While T0 < T1

    T0 = Now

    Loop

    Call Suppression_Msg_MàJ_M

    End Sub

    Alors le message s'affiche mais l'intérieur est Blanc et les 2 Labels sont absents !!

    Que faire ?

    Merci pour ta collaboration.

    Georges

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2020-08-13T17:17:20+00:00

    Bonjour,

    Crée un userform avec la propriété ShowModal positionnée à False avec un label contenant le message désiré. Affiche le userform au début de la macro et décharge-le à la fin.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire