VBA: retour à la ligne, formater un MsgBox



La fenêtre de message (MsgBox) est le moyen le plus utilisé de "communication" entre une macro en VBA et l'utilisateur du fichier Excel.  Le problème est qu'il est parfois difficilement lisible – la plupart des gens utilisent les messages qui ne forment qu'une ligne continue. Pourtant, nous sommes tous habitués à des textes multi-ligne et aux paragraphes. Sachez qu'utiliser les retours à la ligne ou des paragraphes dans une fenêtre de message est bien possible en VBA.

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

Chr(13) & Chr(10)

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

Pour obtenir un "look 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 en pratique de l'utilisation du retour à la ligne en VBA

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

Exemple VBA: retour à la ligne

Ceci est ce que utilise la plupart de gens.

Sub ExempleRetourLigne1()
'par Excel-Malin.com ( https://excel-malin.com/ )

    MsgBox "Ceci est le premier texte" & " " & "Ceci est le second texte..."
End Sub

Le résultat est le suivant:

VBA MsgBox sans retour à la ligne

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

Sub ExempleRetourLigne2()
'par Excel-Malin.com ( https://excel-malin.com/ )

    MsgBox "Ceci est le premier texte" & Chr(13) & Chr(10) & "Ceci est le second texte..."
End Sub

Le résultat donne nettement mieux:

VBA MsgBox avec retour à la ligne

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

Sub ExempleRetourLigne()
'par Excel-Malin.com ( https://excel-malin.com/ )

'Exemple 1 - du texte directement dans la MsgBox
    
    'Exemple 1A - sans retour à la ligne
    MsgBox "Ceci est le premier texte" & " " & "Ceci est le second texte..."

    'Exemple 2B - avec retour à la ligne
    MsgBox "Ceci est le premier texte" & Chr(13) & Chr(10) & "Ceci est le second texte..."

'-----------------------------------------------------------------

'Exemple 2 - utilisation des variables
Texte1 = "Premier texte..."
Texte2 = "Second texte..."

    'Exemple 2A - sans retour à la ligne
    MsgBox Texte1 & " " & Texte2

    'Exemple 2B - avec retour à la ligne
    MsgBox Texte1 & Chr(13) & Chr(10) & Texte2
    
End Sub

 

Exemple VBA: nouveau "paragraphe"

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

Sub ExempleRetourLigne3()
'par Excel-Malin.com ( https://excel-malin.com/ )

    MsgBox "Ceci est le premier texte" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Ceci est le second texte..."
    
End Sub

Ce qui affiche la MsgBox suivante:

VBA MsgBox avec des paragraphes

Conclusion

J'espère que cette petite astuce va bien vous servir. Il s'agit d'une astuce plutôt cosmétique mais les utilisateurs de vos macros apprécieront sans doute! Et encore une remarque, vous n'êtes pas obligés de se limiter à deux lignes ou deux paragraphes. J'ai utilisé deux lignes pour montrer le résultat de manière la plus simple. Vous pouvez, bien sûr, diviser votre texte en 3,4, 10,… parties selon vos besoins.

7 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.