VBA Msgbox : Comment personnaliser ses boutons ?

Modèles prêt à l'emploi, Projets Excel-VBA complets

Les fonctions Msgbox VBA s’avèrent très utiles et sont rapides à mettre place pour permettre aux utilisateurs d’interagir avec votre code. Cependant l’impossibilité de modifier le libellé de vos boutons peut être bloquant voir lassant pour vos utilisateurs qui utilisent toujours les mêmes 7 boutons : 

A première vue, pour personnaliser une boîte de dialogue, les forums vous proposeront de passer par la création d’Userforms. Mais avant de vous lancer dans la confection frénétique et chronographe d’Userforms, voyons ensemble Comment personnaliser ses boutons VBA Msgbox, avec une méthode rapide à mettre en place et à appréhender. Rien qu’avec une mise en place en moins de 5 minutes, à l’aide d’un nouveau module, vous pourrez obtenir le résultat suivant : 
Personnaliser boutons VBA Msgbox

Comparaison entre les Msgbox VBA standards et les Msgbox VBA avec boutons personnalisés

Afin de personnaliser les boutons des Msgbox, nous devons commencer par ajouter le module “VBA_Msgbox_personnalisé” dans notre code (vous trouverez l’intégralité du code plus bas dans l’article)

A noter cette méthode pour personnaliser ses boutons des Msgbox VBA fonctionne sur MS Excel – Access – Word
A présent pour illustrer l’utilisation de cette technique nous allons comparer un appel standard à la fonction VBA Msgbox et un appel à notre fonction VBA Msgbox personnalisé : 

VBA Msgbox Standard


Sub Msgbox_Question_Par_Defaut()

If MsgBox("Comment allez vous aujourd'hui ? ", vbYesNo + vbQuestion, "Numamax") = vbYes Then ' Si la réponse à notre questio est : oui
    MsgBox "Super !" 'Alors répondre ça
Else
    MsgBox "Mince" 'Sinon répondre ceci
End If
    
End Sub

Ici nous appelons classiquement la fonction VBA MsgBox([TEXTE], [BOUTONS], [TITRE]).
 
Nous partons sur la structure de bouton par défaut “vbYesNo” ainsi que l’icone qui peut prendre la forme : 
  • +vbCritical
  • +vbQuestion
  • +vbExclamation
  • +vbInformation

VBA Msgbox avec personnalisation des boutons


Sub Msgbox_Question_Personnalisé()

'##Personalisation du Msgbox (pas plus de 10 caractères)########################
MsgBoxCustom_Set vbYes, "Bien" 'On échange le "oui" par défaut par "bien"
MsgBoxCustom_Set vbNo, "Pas bien" 'On échange le "non" par défaut par "Pas bien"
'###############################################################################
MsgBoxCustom ans, "Comment allez vous aujourd'hui ? ", vbYesNo + vbQuestion, "Numamax"

If ans = vbYes Then ' Si la réponse à notre questio est : oui

MsgBox "Super !" 'Alors répondre ça

Else

MsgBox "Mince" 'Sinon répondre ceci

End If

    
End Sub

Explication de l'utilisation du module de personnalisation de boutons

En prenant cette fois-ci, l’exemple demandé du Msgbox VBA à 3 boutons personnalisés, étudions pas-à-pas le fonctionnement du code : 

Le module que nous avons ajouté nous permet dans un premier temps de modifier le libellé des boutons par défaut : “Oui/Non/Annuler” via l’utilisation de “MsgBoxCustom_Set“. C’est ici que vous pourrez très facilement paramétrer le libellé de vos boutons à votre guise.

Puis le code appel une fonction Msgbox VBA de type “vbYesNoCancel” mais modifiée. Ainsi les champs “Oui/Non/Annuler” porteront les noms que vous leur avez donnés.


Sub Msgbox_3_Choix_Personnalisés()


'##Personalisation du Msgbox (pas plus de 10 caractères)########################
MsgBoxCustom_Set vbYes, "Choix n°1" 'On échange le "oui" par défaut par "bien"
MsgBoxCustom_Set vbNo, "Choix n°2" 'On échange le "non" par défaut par "Pas bien"
MsgBoxCustom_Set vbCancel, "Choix n°3" 'On échange le "non" par défaut par "Pas bien"
'###############################################################################
MsgBoxCustom ans, "Vous devez faire un choix : ", vbYesNoCancel + vbExclamation, "Numamax"



If ans = vbYes Then
    MsgBox "Merci d'avoir choisi le choix n°1"
End If
    
If ans = vbNo Then
    MsgBox "Merci d'avoir choisi le choix n°2"
End If
    
If ans = vbCancel Then
    MsgBox "Merci d'avoir choisi le choix n°3"
End If


End Sub

Enfin, ce qui change également : la valeur retournée en réponse à votre Msgbox personnalisé se trouve stockée dans la variable “ans“. L’exemple accolé vous montre que l’utilisation de la valeur retournée est la même qu’avec la fonction Msgbox VBA standard : 

L’utilisateur a cliqué sur le bouton “Choix n°1” qui est le libellé du bouton par défaut “OUI” qui retourne la valeur vbYes.

Le fichier d'exemple en téléchargement, incluant l'intégralité du module de personnalisation des boutons des Msgbox VBA + les exemples détaillés dans l'article

Acheter

CONCLUSION : Comment personnaliser les boutons des Msgbox VBA ?

Vous disposez désormais d’une plus grande liberté  pour donner de l’originalité à vos Msgbox et ainsi créer une interaction plus efficace avec les utilisateurs de vos outils. Cette méthode est fortement conseillée lorsque vous souhaitez conserver la rapidité de mise en place des Msgbox et que la personnalisation des boutons comme décrit vous convient. Pour des interactions plus complexes et plus personnalisées avec les utilisateurs, il faudra paramétrer des Userforms.
 
Il convient avant de finir, de remarquer les points suivants : 
  • La largeur des boutons n’est pas modifiable, c’est pourquoi nous vous conseillons de ne pas dépasser des libellés de boutons de plus de 10 caractères.
  • Dans cette méthode, nous n’utilisons à aucun moment le bouton “Aide” des Msgbox VBA car ce dernier n’est utilisable qu’avec un fichier de type “Windows Help file”.

Prenez quelques secondes pour

nous évaluer !, nous encourager avec un don !, partager ce contenu !
[kkratings]
[kkratings]