OFFICE : Fenêtres de message étendues

Thierry GASPERMENT

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.

Version 0.4 compatible 64bits

- Titre : OFFICE : Fenêtres de message étendues

- Auteur : Thierry GASPERMENT

- Parution : 22 avril 2007

- Mise à jour : 14 mai 2018

- Licence : 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 ® 2016 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.

Sommaire

- 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 :

1. Afficher du texte formaté (RTF).

2. Fermer automatiquement la fenêtre avec une minuterie.

3. 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.

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 formatage 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

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.