Bonjour
Je profite de mon problème et de mes recherches pour vous faire part de ce que j'ai pu trouver.
Il semble possible que le code suivant ne marche pas à tous les coups à partir d'Excel 2007. (J'ai le problème sur Excel 2010.)
Issu de la FAQ Excel (par SilkyRoad)
Code : Sélectionner tout - Visualiser dans une fenêtre à part CreateObject("Wscript.shell").Popup "Le Message", 3, "Le Titre", vbExclamation
En fonction de où le code est placé, cela marche ou ne marche pas.
Lorsque ça ne marche pas, le message apparait mais le décompte ne se fait pas, il faut cliquer sur OK.
Le problème a été soulevé sur un site en anglais (lien)
Il existe plusieurs alternatives:
Le Popup marchera, par contre le code continue... Donc il faudrait coupler ça avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub test_msgbox_temp_1() CreateObject("WScript.Shell").Run "mshta.exe vbscript:close(CreateObject(""WScript.Shell"").Popup(""Test"",3,""Real%20Time%20Status%20Message""))" MsgBox "test" End Subpar exemple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Wait Now + TimeValue("00:00:03")
La deuxième solution du site est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 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 If retval <> 7 Then 'ne rien faire End If MsgBox "test" End Sub
Avez-vous d'autres solutions ou une explication du bug ?
Partager