# Macros-commandes VBA/Boite de dialogue

Parmi les outils VBA il y a différentes boites de dialogue standard fournies par le langage.

## La boite de dialogue MsgBox

Cette boite de dialogue permet d'afficher des messages à l'utilisateur à partir de constantes ou de variables VBA, elle permet aussi la saisie de réponses à des questions fermées (oui, non, ok, cancel, …). L'utilisateur dispose de plusieurs types de boutons pour poser une question fermée (vbOKOnly, vbOKCancel, vbAbortRetryIgnore, vbYesNo, vbYesNoCancel, vbRetryCancel, …) qui renvoient plusieurs types de réponses quand ils sont activés :
* Le bouton OK renvoie la valeur vbOK
* Le bouton OUI renvoie la valeur vbYes
* Le bouton NON renvoie la valeur vbNo
* Le bouton Annuler renvoie la valeur vbCancel
* Le bouton Ignorer renvoie la valeur vbIgnore
* Le bouton Recommencer renvoie la valeur vbRetry
| Titre | Exemple | Commentaire |
| Syntaxe générale | MsgBox(prompt[, buttons] [, title] [, helpfile, context]) | La fonction MsgBox possède de nombreux autres arguments, consulter l’aide pour plus d’informations |
| Uniquement afficher un message | MsgBox "Hello World",vbOKOnly+vbInformation,"INFO" | Message simple dans une fenêtre INFO avec un indicateur informatif et un bouton OK (seule réponse possible) |
| Afficher un message avec une variable | Msgbox "Vous avez ouvert " & Workbooks.Count & " classeurs" | Message simple dans une fenêtre avec affichage de constantes et de variables |
| Poser une question fermée à choix unique | Reponse=MsgBox("Voulez-vous continuer ?",vbYesNo) | Message simple dans une fenêtre avec saisie de réponses soit OUI soit NON |

## La boite de dialogue InputBox

Cette boite de dialogue permet de récupérer des valeurs saisies par l'utilisateur en réponse à des questions ouvertes. Les réponses sont stockées dans des variables VBA pour être réutilisées ultérieurement.
| Titre | Exemple | Commentaire |
| Syntaxe générale | InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) | La fonction InputBox possède plusieurs autres arguments, consulter l’aide pour plus d’informations |
| Poser une question ouverte à réponse textuelle | nom=InputBox("saisir votre nom") | Cette boîte de saisie permet à l’utilisateur de saisir un texte répondant à ce qui lui est demandé, la variable nom prend alors la valeur qui a été saisie par l'utilisateur |
| Poser une question ouverte à réponse numérique | reponse = InputBox("Entrer un nombre entre 1 et 100", "JEU") | Cette boîte de saisie permet à l’utilisateur de saisir un nombre dans une fenêtre "JEU", la variable reponse prend alors la valeur qui a été saisie par l'utilisateur |

## La boite de dialogue d’ouverture de fichier

Cette boite fait partie du modèle objet et permet via une fenêtre de dialogue spécifique l’ouverture de fichiers ou de dossier. Ici, c’est l’utilisateur qui dirige la manœuvre de recherche arborescente et graphique de fichier.
Les paramètres facultatifs suivants peuvent être utilisés pour la méthode GetOpenFileName : FileFilter, FilterIndex, Title, MultiSelect

## La boite de dialogue de sauvegarde de fichier

Cette boite fait partie du modèle objet et permet via une fenêtre de dialogue spécifique l'enregistrement de fichier. Ici, c’est l’utilisateur qui dirige la manœuvre de recherche arborescente, de typage et de nommage de fichier.
Les paramètres facultatifs suivants peuvent être utilisés pour la méthode GetSaveAsFileName : InitialeFile, FileFilter, FilterIndex, Title

## Liste des imprimantes du PC

La liste des imprimantes installées sur un PC est accessible avec :
Le bouton "Configurer" de cette boite permet d'accéder aux propriétés de l'imprimante sélectionnée.
La sélection effectuée par l'utilisateur modifie directement l'imprimante active.
Par contre pour rechercher une imprimante par une partie de son nom, il faut que le script lise la base de registre.