Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUM OFFICE FAQs OFFICE TUTORIELS OFFICE LIVRES OFFICE SOURCES VBA ACCESS

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

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 (HTTP)

Ensuite insérez le contenu du fichier dans un module.



Valid XHTML 1.1!Valid CSS!

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 oeuvre intellectuelle protégée par les droits d'auteurs. 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Droits de diffusion permanents accordés à developpez LLC. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique MS-Office : Christophe Lessirard et Maxence HUBICHE (MVP) - Contacter par EMail :
Vos questions techniques : forum d'entraide MS-Office - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.