Message MsgBox temporaire ne fonctionne pas

Résolu
Mouftie Messages postés 215 Date d'inscription   Statut Membre Dernière intervention   -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
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

A voir également:

12 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention   16
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention   16
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention   16
 
Eric,
ma question est comment la lances-tu ? "à partir de la fenêtre excel"
Merci
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Contributeur Dernière intervention   953
 
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   Statut Membre Dernière intervention   16
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention   16
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Contributeur Dernière intervention   953
 
Re le Forumn

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

Mytå
0
Mouftie Messages postés 215 Date d'inscription   Statut Membre Dernière intervention   16
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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