found out how to generate a dialog box disappearing after a defined number of seconds, as a function, using shell :

J'ai trouvé comme faire apparaître une boite de dialogue, en l'appelant via un script de shell, en tant que fonction via VBA. Cela permet de la faire disparaître automatiquement après qques secondes. Toutefois, j'aurais besoin de récupérer le bouton qui a été appuyé, qu'il s'agisse de ok ou de annuler. Or le script ci-dessous ne permet que de la faire disparaître, afficher les boutons ok et annuler, mais pas de récupérer le bouton appuéy dans un variable. Je cherche de l'aide pour cette dernière étape :


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
Sub Main
Dim AckTime As Double, InfoBox As Object, Info, Message As String, Timout As Double, Button As Integer
Timout = 1.5
Button = 1
Title = "The message shall vanish in " & Timout & " seconds"
Message = "HELLO !"
SetMicrophone 0
 
 Dim chk As Boolean
    chk = MessageTimeOut(Message, Title, Timout, Button) 'if chk returned FALSE that means the function was not executed successfully
 
End Sub
Function MessageTimeOut(sMessage As String, sTitle As String, dSeconds As Double, iButton As Integer) As Boolean
    Dim Shell
    Set Shell = CreateObject("WScript.Shell")
    Shell.Run "mshta.exe vbscript:close(CreateObject(""WScript.shell"").Popup(""" & sMessage & """," & dSeconds & ",""" & sTitle  & """," & iButton & "))"
    MessageTimeOut = True
End Function
===========

En revanche si c'est codé comme ci-dessous, je peux récupérer le bouton, mais je n'ai pas de disparition automatique après le timeout. Allez comprendre... :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub Main
' https://www.vbsedit.com/html/f482c739-3cf9-4139-a6af-3bde299b8009.asp
 
Dim WshShell, BtnCode
Set WshShell = CreateObject("WScript.Shell")
 
BtnCode = WshShell.Popup("Do you feel alright?", 2, "Answer This Question:", 1 )
 
MsgBox (BtnCode)
 
End Sub

Merci pour votre aide