OFFICE : Fenêtres de message étendues
Date de publication : 22/04/07 , Date de mise à jour : 22/04/07
Par
Thierry GASPERMENT (arkham46.developpez.com/)
Cet outil permet de créer des MsgBox étendues affichant du texte formaté (RTF).
Elles sont auto-refermables et on peut également modifier le texte des boutons.
I. Introduction
II. Installation
III. Les paramètres de la fonction MsgBoxEx
IV. Le format RTF
IV-A. Ecriture de texte RTF
IV-B. Chargement à partir d'un fichier
IV-C. Chargement à partir d'une table
IV-D. Utilisation directe du texte dans le code
V. Copier le message dans le presse-papier
VI. Les téléchargements
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 clickables)
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.
Téléchargez le code et collez le dans un nouveau module, appelez le par exemple
ModMsgBoxPlus.
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.
| Affiche une boîte de message à partir du texte d'un fichier RTF |
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.
| Voici à quoi ressemble un texte RTF |
{\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.
| Affiche une boîte de message à partir du contenu RTF d'un champ mémo |
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 formattage par exemple avec Wordpad.
Pour visualiser le texte formaté, utilisez un éditeur de texte simple, comme Notepad.
| Voici à quoi ressemble un texte RTF |
{\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.
| Affiche une boîte de message avec le texte écrit en VBA |
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


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ©
Thierry GASPERMENT. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc. sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.
Cette page est déposée.