Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA MsgBox qui s'affiche trop tôt

2 réponses
Avatar
Adrien Delcour
Bonjour =E0 tous.
Je voudrais faire une macro qui =E9crit dans un nouveau=20
document une certaine cha=EEne de caract=E8res (qui ne=20
tiendrait pas dans un MsgBox) et qui envoie ensuite un=20
MsgBox de type yes-no qui invite l'utilisateur =E0 donner=20
telle ou telle instruction au vu de la cha=EEne =E9crite dans=20
le nouveau document. Le probl=E8me est que, souvent avec ce=20
genre de macros, le MsgBox s'affiche avant que la cha=EEne=20
de caract=E8res n'ait =E9t=E9 =E9crite. Je suppose que c'est une=20
question de synchronisation de flux et que la cha=EEne de=20
caract=E8res qui doit =EAtre =E9crite dans le document est=20
tamponis=E9e alors que le MsgBox ne l'est pas. Certains=20
langages permettent de forcer la sortie d'un flux sans=20
tamponisation, mais je ne trouve rien de tel dans la=20
documentation du VBA. Quelqu'un peut-il m'aider ? Merci=20
d'avance. Adrien.
"Ne se voyant jamais, ils s'aim=E8rent toujours." Anne=20
Acoluthe.

2 réponses

Avatar
Anacoluthe
Bonjour !

'Adrien Delcour' nous a écrit ...
Je voudrais faire une macro qui écrit dans un nouveau
document une certaine chaîne de caractères (qui ne
tiendrait pas dans un MsgBox) et qui envoie ensuite un
MsgBox de type yes-no qui invite l'utilisateur à donner
telle ou telle instruction au vu de la chaîne écrite dans
le nouveau document. Le problème est que, souvent avec ce
genre de macros, le MsgBox s'affiche avant que la chaîne
de caractères n'ait été écrite.


Curieux. Car le comportement non modal de MsgBox ne va
généralement pas dans ce sens. Quelle version vba ?
Essayez de forcer un rafraîchissement avant la msgbox
Application.ScreenRefresh

"Ne se voyant jamais, ils s'aimèrent toujours."
Anne Acoluthe.


:-D ))))

Anacoluthe
« On ne voit bien qu'avec le coeur »
- Antoine de SAINT-EXUPÉRY

Avatar
Adrien
Merci Anacoluthe.
Je trouve votre réponse en rentrant de week-end.
Votre solution est bonne : en
mettant "Application.ScreenRefresh" juste avant la
commande MsgBox, on empêche le MsgBox de s'afficher trop
tôt.
J'ai essayé de construire un exemple minimal mettant le
problème en évidence, mais il ne se reproduit pas à
volonté. De toute façon, la macro où il se posait à chaque
exécution est maintenant guérie. Encore merci.

-----Message d'origine-----
Bonjour !


Curieux. Car le comportement non modal de MsgBox ne va
généralement pas dans ce sens. Quelle version vba ?
Essayez de forcer un rafraîchissement avant la msgbox
Application.ScreenRefresh