Message MsgBox temporaire ne fonctionne pas

Résolu/Fermé
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 - 24 sept. 2014 à 15:01
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 27 sept. 2014 à 08:31
Bonjour,
J'ai lu sur différent site, qu'il était possible de créé un msgBox temporaire, à l'aide du code :
CreateObject("Wscript.shell").Popup "Le Message", 3, "Le Titre", vbExclamation 
Pourtant, pour moi, cela ne fonctionne pas ; j'ai essayé sur 2 postes , c'est pareil, le message s'affiche, mais ne s'arrête qu'en appuyant sur le bouton Ok.

Est-ce qu'il y a un paramètrage à faire ?
Est-ce que qq'1 voit le pb
Merci pour votre aide

12 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
24 sept. 2014 à 16:25
Bonjour,

Cela fonctionne très bien

Ouvrir un classeur. allez dans ThisWorkbook et mettre ce code:

Option Explicit

Private Sub Workbook_Open()
CreateObject("Wscript.shell").Popup "Ce message fermera dans 3 secondes", 3, "Message", vbExclamation
End Sub


Fermez le classeur en l'enregistrant.

C'est tout!
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
24 sept. 2014 à 17:28
Bonjour Le Pivert,
Je suis consiente que cela fonctionne pour beaucoup, car on trouve ce code dans de nombreux postes.
Sauf que pour moi, cela ne fonctionne pas ; le message apparait, mais ne se ferme pas tout seul, ni après 3 secondes, ni après 10 mn.
Merci
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
24 sept. 2014 à 21:57
Bonjour,

personnellement, sur W7 et excel 2003, si je lance à partir de VBE la boite ne se ferme pas. Si je lance à partir de la fenêtre excel elle ne reste affichée que 0.2 s

Autre proposition : faire un userform et :
Dans le module Userform1 :
Private Sub UserForm_Activate()
    Application.OnTime Now + TimeValue("00:00:03"), "fermer"
End Sub

Dans un module standard :
Sub fermer()
    Unload UserForm1
End Sub


eric
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
25 sept. 2014 à 07:59
Bonjour Eric,
Tu me rassures, je ne suis donc pas la seule...
Peux-tu me dire ce que tu entends par "Si je lance à partir de la fenêtre excel elle ne reste affichée que 0.2 s"
Lancer à partir d'excel, tu veux dire avec un bouton ? Moi je suis sur Excel 2007 et cela ne fonctionne pas non plus avec un bouton.
Merci pour le conseil détourné, ça peut servir.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
25 sept. 2014 à 08:01
Bonjour,

Peux-tu me dire ce que tu entends par "Si je lance à partir de la fenêtre excel elle ne reste affichée que 0.2 s"
elle apparait à peine et se ferme.
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
25 sept. 2014 à 08:55
Eric,
ma question est comment la lances-tu ? "à partir de la fenêtre excel"
Merci
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
25 sept. 2014 à 18:00
Par le menu macro, Alt+F8. Mais un bouton c'est pareil.
C'était juste pour dire que j'avais 2 comportements différents (mais aucun correct) selon le fenêtre active au lancement.
eric
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
25 sept. 2014 à 18:38
Salut le Forum

Une autre façon pour le faire

Declare Function MessageBoxTimeout Lib "user32.dll" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long, _
ByVal wLanguageID As Long, _
ByVal lngMilliseconds As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Public Sub test_msgbox_temp_2()
Const cmsg As String = "Msgbox avec tempo de 2s"
Const cTitle As String = "Popup"
Dim retval As Long
retval = MessageBoxTimeout(FindWindow(vbNullString, Title), cmsg, cTitle, 4, 0, 2000) 'en ms

MsgBox "Terminé"

End Sub

Mytå
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
25 sept. 2014 à 20:33
Bonsoir Eriiic et Mytå
Merci pour vos réponses ; je suis chez moi, avec Excel 2010 avec lequel ma procédure ne fonctionne pas.
Par contre, celle de Mytå fonctionne parfaitement.
J'essaye demain sur Excel 2007 au bureau...

Merci encore à vous deux.
Bonne fin de soirée
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
25 sept. 2014 à 22:55
Ma proposition ne fonctionne pas chez toi ?
Ca me surprendrait...
https://www.cjoint.com/?DIzw5BwL7cu

eric
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
26 sept. 2014 à 08:04
Eric et Mytå
Eric "Ma proposition ne fonctionne pas chez toi ? "
Excuse-moi de ne pas avoir répondu ; oui, cela fonctionne parfaitement et c'est très simple à utiliser (même si c'est moins simple que
CreateObject("Wscript.shell").Popup "Le Message", 3, "Le Titre", vbExclamation 
).
Mytå
Je confirme que ça fonctionne sur Excel 2007.

A vous 2, dans mon projet (qui n'est utile qu'à moi, mais qui me sert bien) j'utilise vos 2 propositions, chacune à leur tour...

Merci encore et au plaisir de vous solliciter de nouveau ;>
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
26 sept. 2014 à 18:15
Le problème a déjà été soulevé. Peut-être une alternative pour utiliser:

CreateObject("Wscript.shell").Popup "Le Message", 3, "Le Titre", vbExclamation

https://www.developpez.net/forums/i1086053/logiciels/microsoft-office/excel/macros-vba-excel/msgbox-temporaire-popup-probleme-timout/

Bon WE
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
26 sept. 2014 à 21:56
Re le Forumn

La deuxième solution est la solution que j'ai fourni.

Mytå
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
27 sept. 2014 à 08:02
Bonjour Le Pivert,
Merci, effectivement une ligne c'est mieux...
Par contre, je ne vois pas ce que la personne veut dire par :"Le Popup marchera, par contre le code continue... Donc il faudrait coupler ça avec "
Application.Wait Now + TimeValue("00:00:03")
vu que la boîte disparait bien avec seulement
Sub test_msgbox_temp_1()
CreateObject("WScript.Shell").Run "mshta.exe vbscript:close(CreateObject(""WScript.Shell"").Popup""Test"",3,""titre"",vbexclamation))"
End Sub
Bon week end à tous et merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 sept. 2014 à 08:31
Le Popup marchera, par contre le code continue... Donc il faudrait coupler ça avec

C'est une autre éventualité dans certains cas. Le message ne se ferme pas.

Je suis sous Windows 8.1 avec Office 2007, toues les possibilités fonctionnent.

Sur mon portable XP avec Office 2003, cela fonctionne aléatoirement.

On a fait le tour du problème, mais nous n'avons pas trouvé le pourquoi. Cela fait parti d'Excel qui réserve quelques surprises. C'est un outil tellement puissant!
0