Afficher un message sous forme de pop-up html (VBA, HTML)
Quand vous souhaiter que votre programme (macro VBA, script VBS) envoie un message à l'utilisateur, vous utilisez généralement MsgBox.
Si le message est particulièrement long, ou bien si vous souhaitez lui donner une présentation particulièrement soignée (couleurs, voire images), MsgBox peut s'avérer un peu limité.
Dans ce cas, vous pouvez envisager l'utilisation d'un pop-up html généré par votre macro.
Si vous avez plusieurs messages à émettre, vous pouvez avantageusement créer un sous-programme d'envoi de message, par exemple :
Sub msgbox_popup(txt)
txt = WorksheetFunction.Substitute(txt, Chr(13), "<BR>")
txt = WorksheetFunction.Substitute(txt, Chr(10), "<BR>")
Set ie = CreateObject("internetexplorer.application")
ie.Navigate ("about:blank")
ie.Width = 500
ie.Height = 500
ie.document.write txt
ie.Visible = True
End Sub
Vous pouvez aussi masquer les barres d'outils d'internet explorer pour diminuer la taille du pop-up :
ie.addressbar = False
ie.MenuBar = False
ie.StatusBar = False
ie.Toolbar = False
Une fois ce sous-programme recopié il vous suffira de remplacer MsgBox("zaza")
par MsgBox_popup("zaza") (cliquez pour voir le pop-up).
Pour écrire en couleur, il suffit d'introduire les formats HTML dans le texte du message :
msgbox_popup ("<FONT COLOR='blue'>bonjour</FONT> <FONT COLOR='red'>tout</FONT> <FONT COLOR='green'>le</FONT> <FONT COLOR='black'>monde</FONT>")
(cliquez pour voir le pop-up)
Vous pouvez aussi faire en sorte que le message disparaisse après quelques secondes :
Sub test()
msgbox_popup "Cette fenêtre va se fermer au bout de 2 secondes", 2
End Sub
Sub msgbox_popup(txt, durée)
txt = WorksheetFunction.Substitute(txt, Chr(13), "<BR>")
txt = WorksheetFunction.Substitute(txt, Chr(10), "<BR>")
txt = "<FONT SIZE=5 color='blue'><CENTER>" & txt & "</CENTER></FONT>"
Set ie = CreateObject("internetexplorer.application")
ie.Navigate ("about:blank")
ie.Width = 700
ie.Height = 100
ie.Top = 150
ie.Left = 150
ie.document.write txt
ie.document.Title = "message"
ie.addressbar = False
ie.MenuBar = False
ie.StatusBar = False
ie.Toolbar = False
ie.Visible = True
Application.Wait Now + durée / 3600 / 24
ie.Quit
End Sub