Option Explicit
Private Const AjustHauteur As Integer = 21
Private Const AjustLargeur As Integer = 6
Sub essaiMsgTemp()
Dim Message As String
Dim Titre As String
Message = "Mon message trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés," & _
" trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
" trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
" trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
"...long"
Titre = "Magic_Doctor"
MsgTemp Message, 3, Titre
'ou
Message = [Feuil1!A21]
MsgTemp Message, 3
End Sub
Function MsgTemp(Message As String, NbSec As Long, Optional Titre As String = "Message")
Dim ufTemp As Object
Dim newLabel As Object
Dim Code As String
Dim Depart As Date
'Création du UserForm
Set ufTemp = ThisWorkbook.VBProject.VBComponents.Add(3) 'vbext_ct_MSForm
ufTemp.Properties("Caption") = Titre
'Ajout d'un label
Set newLabel = ufTemp.Designer.Controls.Add("forms.Label.1")
With newLabel
.Name = "LabelTemp"
.Left = 0: .Top = 0: .Width = 200
.Font.Name = "Tahoma": .Font.Bold = True: .Font.Italic = True
.ForeColor = &H80000012: .BackColor = &HC0FFFF: .BorderColor = &H80000006
.Caption = Message: .AutoSize = True
If .Width < 200 Then .Width = 200: .AutoSize = False
End With
'Ajout de code dans le nouveau UserForm
Code = "Private Sub UserForm_Initialize()" & vbLf & _
"Me.Height = LabelTemp.Height + " & AjustHauteur & ": Me.Width = LabelTemp.Width + " & AjustLargeur & vbLf & _
"End Sub"
With ufTemp.CodeModule
.InsertLines .CountOfLines + 1, Code
End With
'Affichage du USF
VBA.UserForms.Add(ufTemp.Name).Show 0
Depart = Now()
Do Until (DateDiff("s", Depart, Now()) > NbSec)
DoEvents
Loop
'Suppression du USF
ThisWorkbook.VBProject.VBComponents.Remove ufTemp
Application.VBE.CommandBars.FindControl(ID:=106).Execute
End Function