Si vous démarrez une macro plus longue, vous devez vous assurer que l’utilisateur sait qu’une macro est toujours en cours d’exécution et lui en informer via un message d’écran. Cette mesure empêche l’utilisateur de devenir nerveux et peut-être de croire qu’une macro qui fonctionnait depuis longtemps s’est écrasée. Cette impression peut facilement survenir si vous avez ensuite désactivé la mise à jour de l’écran.
Pour cette raison, vous pouvez afficher un champ de texte temporaire sur l’écran juste au début de la macro, écrire un message dans le champ de texte et supprimer à nouveau le champ de texte à la fin de la macro.
Figure: Champs de texte “Patientez” comme fenêtres de message
La macro pour cette tâche est présentée dans l’extrait .
Private Sub Workbook_Open() ActiveSheet.OLEObjects.Add _ (ClassType:="Forms.TextBox.1", _ Left:=70, Top:=60, Width:=150, Height:=25).Activate ActiveSheet.OLEObjects _ (ActiveSheet.OLEObjects.Count).Name = "Message" ActiveSheet.OLEObjects("Message").Object.Text = _ " Patientez s'il-vous-plait..." Application.Wait (Now + TimeValue("0:00:05")) ActiveSheet.OLEObjects("Message").Delete End Sub
Commentaires
■ La collection OLEObjects est une collection de tous les contrôles ActiveX ou objets OLE liés ou incorporés.
■ Add est une méthode de l’objet OLEObhects utilisé pour ajouter une zone de texte à l’objet de collection. Sa syntaxe est :
Add (ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height)
Dans l’argument ClassType, vous devez spécifier de quel type il doit s’agir. Voir les options qui s’offrent à vous dans le tableau suivant.
Contrôle à insérer | Description |
CheckBox | Forms.CheckBox.1 |
ComboBox | Forms.ComboBox.1 |
CommandButton | Forms.CommandButton.1 |
Frame | Forms.Frame.1 |
Image | Forms.Image.1 |
Label | Forms.Label.1 |
ListBox | Forms.ListBox. |
MultiPage | Forms.MultiPage.1 |
OptionButton | Forms.OptionButton.1 |
ScrollBar | Forms.ScrollBar.1 |
SpinButton | Forms.SpinButton.1 |
TabStrip | Forms.TabStrip.1 |
TextBox | Forms.TextBox.1 |
ToggleButton | Forms.ToggleButton.1 |
■ Dans les arguments suivants, vous définissez la position et la taille exactes du champ de texte que vous souhaitez insérer.
■ Immédiatement après avoir inséré le champ de texte, activez-le avec la méthode Activate.
■ À l’étape suivante, vous attribuez un nom au champ de texte inséré afin qu’il soit accessible plus facilement. Pour ce faire, utilisez la propriété Name.
■ Pour pouvoir attribuer un texte au champ de texte, vous devez adresser le champ de texte correctement. Vous pouvez le faire en utilisant le nom du champ de texte et les propriétés Objet et Texte.
■ Vous pouvez ensuite traiter vos autres commandes de macro et supprimer le champ de texte à l’aide de la méthode Delete une fois la macro complète terminée.
■ La méthode Wait a été utilisée pour supprimer la zone de texte insérée après exactement cinq secondes.