I. Introduction▲
Cet outil offre la possibilité d'ajouter de nouvelles fonctionnalités à la boîte de message standard MsgBox.
Il se présente sous la forme d'un module de code VBA à inclure dans votre application.
La fonction MsgBoxEx programmée dans ce module permet de :
- Afficher du texte formaté (RTF).
- Fermer automatiquement la fenêtre avec une minuterie.
- Modifier le texte des boutons.
De plus, les liens hypertextes (ftp://,http://,mailto:...) sont cliquables).
Exemples en images :
Merci à la rédaction Office de DVP pour le temps passé en relecture et en tests.
II. Installation▲
Il n'y a rien de compliqué à installer.
Une fois téléchargé et décompressé, importez le fichier MInputBoxPlus.bas dans votre projet.
Dans le menu : Fichier => Importer un fichier … (ou glisser-déposer le fichier dans le projet).
Utilisez ensuite la fonction MsgBoxEx au lieu de la fonction standard MsgBox.
Le code est disponible au format texte dans la section Les téléchargements
III. Les paramètres de la fonction MsgBoxEx▲
La nouvelle fonction pour la boîte de message est MsgBoxEx.
Elle s'utilise comme la fonction MsgBox standard, les paramètres supplémentaires sont expliqués ci-dessous.
Seul le paramètre Prompt est obligatoire.
Paramètre | Type | Explication |
---|---|---|
Prompt | String | Texte à afficher, au format RTF |
Buttons | VbMsgBoxStyle | Style de la fenêtre, à choisir parmi les styles standards. (paramètre identique à la MsgBox standard) |
Title | String | Titre de la fenêtre (paramètre identique à la MsgBox standard) |
HelpFile | String | Fichier d'aide (paramètre identique à la MsgBox standard) |
Context | String | Contexte de l'aide (paramètre identique à la MsgBox standard) |
BackColor | Long | Couleur de fond de la fenêtre |
pTexteWidth | Long | Largeur de l'éditeur de texte, en pixels. Si la taille n'est pas spécifiée, la boîte de message garde sa largeur standard. Exception : si le message contient un tableau, la largeur est augmentée pour visualiser le tableau complet. |
pTimer | Integer | Minuterie en secondes. Lorsque la minuterie est écoulée le bouton par défaut est cliqué automatiquement. |
pTimerText | String | Texte de la minuterie. Ce texte s'affiche sur le bouton sélectionné par défaut, en plus du texte du bouton. Le temps restant s'affiche en remplacement du texte [Time]. (Ex de paramètre pTimerText: " (Il reste [Time] s") |
pBlink | Booléen | Si Vrai, alors le bouton sélectionné par défaut clignote pendant le compte à rebours (si pTimer > 0) |
pButtonText1 pButtonText2 pButtonText3 pButtonText4 |
String | Texte des boutons, numérotés de 1 à 4 de gauche à droite. |
IV. Le format RTF▲
IV-A. Ecriture de texte RTF▲
La nouvelle fonction MsgBoxEx reçoit du texte RTF dans son paramètre Prompt.
Pour écrire un texte au format RTF, vous pouvez utiliser par exemple WordPad ou Word.
Ecrivez votre texte formaté, puis dans le menu Fichier --> Enregistrer sous, choisissez le type de fichier Texte mis en forme (RTF).
Une fois le texte écrit et formaté, il y a plusieurs solutions pour l'utiliser.
IV-B. Chargement à partir d'un fichier▲
La fonction LoadRTFFile permet de charger un fichier texte dans une variable.
Dim
ltexte as
String
ltexte =
LoadRTFFile
(
"C:\MonChemin\MonFichierTexte.rtf"
)
Call
MsgBoxEx
(
ltexte, vbQuestion
Or
vbAbortRetryIgnore
Or
vbDefaultButton3
, "Test MsgBoxEx"
, , , _
RGB
(
250
, 250
, 240
), , 20
, " ([Time] sec)"
, True
)
IV-C. Chargement à partir d'une table▲
Vous pouvez stocker vos textes RTF dans un champ Mémo d'une table.
Par exemple une table TTextRTF qui contiendra tous les textes de nos messages :
- un champ texte Id, clé primaire de la table
- un champ mémo TextRTF
On retrouvera chaque texte par son Id.
Pour visualiser le texte formaté, utilisez un éditeur de texte simple, comme Notepad.
{\rtf1\ansi\ansicpg1252\deff0\deflang1036\deflangfe1036
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}
{\f1\fswiss\fprq2\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
\viewkind4\uc1\pard\nowidctlpar\b\f0\fs24
L\rquote application s\rquote est arr\'eat\'e9e suite \'e0 une erreur d\rquote ex\'e9cution.\par
\par
\pard{\pntext\f2\'B7\tab}
{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}
\nowidctlpar\fi-720\li720\ul\b0\fs20 Proc\'e9dure ou fonction\ulnone : [ProcName]\par
\ul{\pntext\f2\'B7\tab}Num\'e9ro de l'erreur \ulnone : [ErrNumber]\par
\ul{\pntext\f2\'B7\tab}Description de l'erreur \ulnone : [ErrDescription]\b\par
\pard\nowidctlpar\fs24\par
\pard\nowidctlpar\qc\b0\f1\fs16
[hyperlien=mailto:mailsupport@mail.com?subject=(MailSubject)]
Cliquer ici pour envoyer un mail au support[/hyperlien]\f0\fs24\par
\pard\nowidctlpar\par
}
Copiez-collez ce texte dans le champ mémo.
Ensuite on peut par exemple utiliser la fonction DLookup pour rechercher le texte RTF associé à un Id.
Dim
ltexte as
String
ltexte =
DLookup
(
"TextRTF"
, "TTextRTF"
, "Id='MonId'"
)
Call
MsgBoxEx
(
ltexte, vbQuestion
Or
vbAbortRetryIgnore
Or
vbDefaultButton3
, "Test MsgBoxEx"
, , , _
RGB
(
250
, 250
, 240
), , 20
, " ([Time] sec)"
, True
)
IV-D. Utilisation directe du texte dans le code▲
Vous pouvez bien évidemment écrire directement votre texte RTF dans le code VBA.
Ecrivez le texte avec formatage par exemple avec Wordpad.
Pour visualiser le texte formaté, utilisez un éditeur de texte simple, comme Notepad.
{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20
Ceci est un texte \ul format\'e9\ulnone \'e9crit \b dans Worpad.\par
Utilisez par exemple NotePad pour visualisez le texte RTF.\par
\b0\par
Copiez-collez ce texte dans le code VBA.
Utilisez l'instruction vbCrLf pour reconstruire le texte avec ses sauts de ligne.
Dim
ltexte As
String
ltexte =
"{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}"
&
vbCrLf
&
_
"{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 "
&
vbCrLf
&
_
"Ceci est un texte \ul format\'e9\ulnone \'e9crit \b dans Worpad.\par"
&
vbCrLf
&
_
"Utilisez par exemple NotePad pour visualisez le texte RTF.\par"
&
vbCrLf
&
_
"\b0\par"
&
vbCrLf
&
_
"}"
Call
MsgBoxEx
(
ltexte, vbQuestion
Or
vbAbortRetryIgnore
Or
vbDefaultButton3
, "Test MsgBoxEx"
, , , _
RGB
(
250
, 250
, 240
), , 20
, " ([Time] sec)"
, True
)
V. Copier le message dans le presse-papier▲
Il est possible de copier le contenu de la fenêtre dans le presse-papier.
Cliquez avec le bouton droit de la souris dans le texte.
Un menu s'ouvre offrant les deux options suivantes :
- Copier tout le texte
- Copier le texte sélectionné
Le texte est copié au format RTF, et peut donc être ensuite collé avec ou sans son formatage.
VI. Les téléchargements▲
Télécharger le module au format texte
Une fois téléchargé et décompressé, importez le fichier MInputBoxPlus.bas dans votre projet.
Dans le menu : Fichier => Importer un fichier … (ou glisser-déposer le fichier dans le projet).
Utilisez ensuite la fonction MsgBoxEx au lieu de la fonction standard MsgBox.