VBA: retour à la ligne, formater un MsgBox

Dans ce tutoriel VBA, nous allons explorer comment optimiser l'interaction entre une macro VBA et les utilisateurs d'un fichier Excel en améliorant la lisibilité des messages affichés dans les boîtes de dialogue MessageBox (MsgBox). Les MessageBox sont des outils couramment employés pour faciliter la communication entre le code VBA et les utilisateurs. Cependant, il est fréquent que les messages soient présentés sous la forme d'une seule ligne continue, ce qui peut nuire à leur lisibilité.

Nous sommes tous habitués aux textes structurés en plusieurs lignes et paragraphes. Il est donc essentiel d'adopter une approche similaire pour les messages affichés dans les boîtes de dialogue MessageBox en VBA. Ce tutoriel vous guidera à travers les étapes pour intégrer des retours à la ligne et des paragraphes distincts dans les messages de vos MessageBox. Vous améliorerez ainsi considérablement l'expérience utilisateur et la compréhension des informations transmises.

Le code magique: Chr(13) & Chr(10)

De manière générale, pour obtenir un retour à la ligne en VBA, vous pouvez utiliser la combinaison de deux caractères non imprimables de la table ASCII.  Il s'agit du 13ème et du 10ème caractère. Pour les "afficher", il faut passer par la fonction VBA Chr().

Le petit code VBA qui suit ajouté dans une chaîne de caractères (String) va séparer le texte en deux (ou plusieurs) lignes.

Chr(13) & Chr(10)

Pour obtenir un "effet de paragraphe" (deux parties de texte séparés par une ligne vide), il vous suffit de répéter ce code VBA deux fois:

Chr(13) & Chr(10) & Chr(13) & Chr(10)

Exemples pratiques de l'utilisation du retour à la ligne dans un MsgBox en VBA

Voici donc deux exemples basiques de l'utilisation pratique de cette astuce:

Exemple A: VBA – retour à la ligne

Ceci est ce que utilise la plupart de gens.

Le résultat est le suivant:

VBA MsgBox sans retour à la ligne

Et voici le code qui crée des lignes distinctes:

Le résultat donne nettement mieux:

VBA MsgBox avec retour à la ligne

Notez que le code Chr(13) & Chr(10) ne peut pas être inséré à l'intérieur des guillemets. Vous devez séparer votre texte, délimiter les deux textes par les guillemets et insérer le séparateur de lignes entre ces deux textes. Il en va de même si vous séparez votre texte en 3, 4 ou plusieurs lignes.

Et voici le code complet pour que vous puissiez tester par vous-mêmes (avec ou sans utilisation des variables):

 

Exemple B: VBA – nouveau "paragraphe"

Et voici le code VBA et le résultat pour créer un "nouveau paragraphe"…

Ce qui affiche la MsgBox de manière suivante:

VBA MsgBox avec plusieurs paragraphes

Conclusion

J'espère sincèrement que cette technique, présentée dans ce tutoriel, améliorera l'expérience de vos utilisateurs lorsqu'ils interagiront avec vos macros. Bien que cette méthode puisse sembler principalement esthétique, il est important de ne pas sous-estimer l'impact d'une présentation claire et organisée sur la satisfaction et l'efficacité des utilisateurs.

Il convient également de souligner que la flexibilité offerte par cette technique ne se limite pas à l'exemple présenté ici, qui mettait en avant l'utilisation de deux lignes ou deux paragraphes. Cette approche a été choisie pour démontrer le concept de manière simple et épurée. Cependant, il est tout à fait possible d'étendre cette méthode pour diviser votre texte en plusieurs sections, que ce soit 3, 4, 10 ou même davantage, en fonction de vos besoins spécifiques et de la complexité du contenu que vous souhaitez présenter.

En fin de compte, l'objectif de ce tutoriel est d'encourager une meilleure compréhension et une utilisation efficace de cette technique pour améliorer la qualité globale de vos projets VBA et favoriser une expérience utilisateur plus agréable et productive.

Pour aller plus loin en VBA

Et voici quelques articles supplémentaires qui pourraient vous être utiles…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

8 commentaires sur “VBA: retour à la ligne, formater un MsgBox”