Message fixe durant le déroulement d'une macro

Bonjour,

J’ai une macro relativement longue et j’aurais voulu qu’apparaisse un message du genre „La feuille est en cours de réactualisation, merci de patienter“ pendant que le code moulinerait en arrière-plan. A la fin de la macro, ce texte disparaîtrait automatiquement.

J’ai tenté le coup avec un UserForm sans bouton que j’aurais voulu ouvrir en début de macro avec UserFormX Show et refermer en fin de macro avec Unload UserFormX, mais bien entendu que le code reste bloqué après l’ouverture du UserForm et attend que quelqu’un le referme

Savez-vous s’il existe une solution de remplacement ?

Amicalement.

Bonjour

Il faut utiliser un userform en mode non modal

Voir l'aide sur Show

Lorsqu'un objet UserForm n'est pas modal, le code suivant est exécuté dès qu'il apparait

UserFormX.Show vbModeless

Bonjour,

il existe un contrôle de UserForm destiné à cet usage.

ce contrôle n'est pas toujours aisé à mettre en place (selon les versions d'Excel)

Il s'appelle ProgresseBar

Pour essayer de le mettre en place faire un Clic Droit sur la barre d'Outils du USF

Cliquer sur Contrôle Supplémentaire

Cocher sur Microsoft ProgressBar control 6.0

ctrlsup2

Si tu arrives à l'installer, je te donnerai une démo pour le faire fonctionner !

A+

Bonjour et merci à tous les deux pour vos réponses

J'ai essayé la solution de Banzai qui est quand même la plus simple. Le UserForm apparaît alors instantanément, mais il reste blanc une fraction de seconde. Ensuite apparaît mon message, sur un fond grisé.

Est-ce possible d’améliorer cela ? Est-ce que ça vient du fait que je n’ai pas installé le contrôle indiqué par Galopin ?

A vous relire.

Bonjour

A tester

A l'ouverture de l'userform (procédure UserForm_Initialize) ajoutes

Me.Repaint

Bonsoir,

Merci Banzai pour ta réponse.

J'ai essayé de créer un fichier dont la macro dure suffisamment longtemps afin de démontrer mon problème (je ne peux pas utiliser mon fichier réel pour ce fil-ci, car il s'agit du fichier que je traite actuellement pour Thanatos69 et mon problème ne concerne qu'une toute petite partie d'un tout qui est assez énorme et qui se déroule par étapes).

Ce matin au boulot, avec le fichier de Thanatos69, j'avais les problèmes décrits jusqu'ici sur ce fil (UserForm tout d'abord blanc sans texte, puis après quelques secondes, normal avec texte).

Maintenant à la maison, avec mon nouveau fichier-exemple ci-joint, mon UserForm s'ouvre tout le temps que dure la macro, mais il reste désespérément blanc

Je ne vois pas ce que tu veux dire Banzai par "procédure UserForm_Initialize" puisque ni dans un fichier, ni dans l'autre, je n'ai (besoin de) ce passage. Je ne saurais pas où placer le dernier code proposé.

Est-ce que le fait qu'ici à la maison mon UserForm reste toujours blanc proviendrait des contrôles indiqués par Galopin qui seraient en place au travail (sans que je le sache), mais pas à la maison ?

A vous relire.

193essai.xlsm (17.48 Ko)

Bonsoir,

Le contrôle Progressbar n'a rien à voir dans cette histoire.

Comme la plupart des contrôle à utilisation rare, par défaut il n'est jamais visible dans aucune config Excel, tant qu'il n'est pas coché par l'utilisateur.

A+

Bonsoir

Lors de l'ouverture d'un userform la procédure UserForm_Initialize est appelée (le pendant c'est la procédure Worksheet_Activate à l'ouverture d'une feuille excel)

Et cette procédure est à placer dans le code de l'Userform

Mais dans ce cas cela ne sert à rien

Le meilleur que j'ai trouvé

Dans ta macro

Sub rr()
  Application.ScreenUpdating = False

  xx = InputBox("Combien de cellules doivent être modifiées ? Par exemple [surligner=#FFFF80]100'000 c'est pas mal.")

UserForm5.Show vbModeless
  UserForm5.Repaint

  For i = 1 To xx
     Cells(i, 1) = Rnd
  Next i

  Unload UserForm5
End Sub

Sauf pour XL 2003

Bonjour à vous deux, bonjour le Forum,

Merci beaucoup pour vos réponses.

Banzai, ça a l'air de fonctionner (en tout cas sur Excel 2010 au travail). Avec ce fichier-exemple, que je sois au travail ou à la maison, le message reste absolument blanc sans ton code complémentaire. Avec, par contre, ça fonctionne parfaitement.

J'ai maintenant introduit ce passage dans le fichier de Thanatos69 et lui ai demandé de tester. Comme je ne sais plus s'il travaille sur Excel 2003 ou 2007, on verra bien le résultat.

Merci encore pour votre aide et à la prochaine.

EDIT QUASI IMMEDIATE : Je viens de me rendre compte que Banzai indiquait que 100'000 lignes n'étaient pas possibles sur XL2003, et non pas le passage UserForm5.Repaint

Rechercher des sujets similaires à "message fixe durant deroulement macro"