--- Soumis par Michael Bedward---
Afficher une boîte de dialogue pour un laps de temps déterminé.
La boîte de dialogue MsgBox ne permet pas de se fermer automatiquement après un certain temps. On peut cependant fermer cette boîte de dialogue en utilisant un Timer, par exemple.
Une autre alternative et de construire un formulaire en mode d'exécution, utilisant CreateForm et CreateControl. Cette fonction utilise ces méthodes pour créer ce formulaire et le fermer automatiquement après un certain temps.
'************* Code Start ************** ' Affiche un simple popup dialogue pour un temps ' prédéterminé en secondes. ' ' Ce code fut écrit par Michael Bedward ' mbedward@ozemail.com.au ' March 31, 1999. ' ' Vous êtes libres de distribuer ce code comme vous le ' désirez, mais il serait agréable de créditer l'auteur initial ' en laissant cette note. Toute suggestion d'amélioration est ' bienvenue. ' ' Modifications: ' April 12, 1999 ' Modifications selon suggestion de Mark West (mrwest@engin.umich.edu): ' pour dimensionner le formulaire selon la longueur du texte; ' arguments optionels pour la police de caractères ( font name and size); ' code pour effacer l'object formulaire. ' ' April 16,1999 ' Ajout de traitement d'erreur selon suggestion de Dev Ashish (dash10@hotmail.com). ' Sub mxbPopupMessage(ByVal message As String, _ Optional ByVal title As Variant, _ Optional ByVal duration As Single, _ Optional strFontName As String, _ Optional intFontSize As Integer) Dim f As Form Dim lbl As Label Dim dblWidth As Double Dim myName As String Dim savedForm As Boolean ' utilisé par traitement d'erreur ' savedForm = False ' empêche le rafraîchissement de l'écran momentannéement ' pour éviter de voir le déroulement de la création du formulaire ' On Error GoTo ErrorHandler Application.Echo False ' formulaire tout vide ' Set f = CreateForm myName = f.Name f.RecordSelectors = False f.NavigationButtons = False f.DividingLines = False f.ScrollBars = 0 ' none f.PopUp = True f.BorderStyle = acDialog f.Modal = True f.ControlBox = False f.AutoResize = True f.AutoCenter = True ' le titre ' If IsMissing(title) Then f.Caption = "Info" Else f.Caption = title End If ' étiquette pour le message ' Set lbl = CreateControl(f.Name, acLabel) lbl.Caption = message lbl.BackColor = 0 ' transparent lbl.ForeColor = 0 lbl.Left = 100 lbl.Top = 100 If strFontName <> "" Then lbl.FontName = strFontName If intFontSize > 0 Then lbl.FontSize = intFontSize lbl.SizeToFit dblWidth = lbl.Width + 200 f.Width = dblWidth - 200 f.Section(acDetail).Height = lbl.Height + 200 ' affichage du formulaire (tout d'abord, le sauvegarder et le fermer ' de sorte qu'il se centre à l'ouverture) ' DoCmd.Close acForm, myName, acSaveYes savedForm = True DoCmd.OpenForm myName DoCmd.MoveSize , , dblWidth DoCmd.RepaintObject acForm, myName ' rétablir les rafraîchissments d'écran ' Application.Echo True ' afficher le formulaire pour un temps limité ' If duration <= 0 Then duration = 2 Dim startTime As Single startTime = Timer While Timer < startTime + duration Wend ' fermer et effacer ce formulaire ' DoCmd.Close acForm, myName, acSaveNo DoCmd.DeleteObject acForm, myName Exit Sub ErrorHandler: Application.Echo True Dim i As Integer For Each f In Forms If f.Name = myName Then DoCmd.Close acForm, myName, acSaveNo Exit For End If Next f If savedForm Then DoCmd.DeleteObject acForm, myName End If End Sub '************* Code End **************