récupérer la réponse : affecter une variable
Ouvrez le document "Promesse.doc" et pressez les touches Alt F11 pour charger le module de macro.
Question : cette macro doit-elle être disponible pour tous nos documents ou bien n'être accessible qu'à partir de Promesse.doc ?
-
On aurait fort bien pu rendre cette macro accessible en permanence en ajoutant une instruction qui se chargerait d'ouvrir le document "Promesse.doc" mais cela alourdirait alors inutilement normal.dot : il est à parier que vous n'utiliserez sans doute pas cette macro tous les jours. Dans ce cas, il vaut mieux ne la rendre accessible que dans Promesse.doc :
-
Positionnez-vous sur le projet "Promesse", ThisDocument et faites un double-clic. Il faut maintenant donner un nom à notre macro. Appelons-la "promesse", tout simplement.
-
Dans la grande fenêtre de droite, tapons donc sub promesse et appuyons sur entrée.
Vous devriez avoir obtenu
-
Sub promesse()
end sub
-
Entre ces deux lignes, tapez la première instruction : InputBox("Genre du destinataire",,"Monsieur")
Bien. Si nous lancions à présent la macro (en appuyant sur la touche de la barre d'outils), rien ne se passerait (essayez !). Pourquoi ?
Nous posons à l'utilisateur une question. C'est donc que nous attendons (en toute logique), une réponse.
VBA attend que nous nommions, en termes informatiques "affections une variable" à cette réponse afin de pouvoir la manipuler dans notre code.
On pourrait dire que LaRéponse=ce_que_l'utilisateur_va_saisir_dans_ Inputbox.
Si nous décidions d'appeler "Genre" la réponse à la question "Quel est le genre du destinataire" (faisons simple et logique pour nous y retrouver) : cela donnerait donc : Genre=InputBox("Genre du destinataire",,"Monsieur")
Essayez !
Voici notre résultat. Appuyez sur "Annuler".
Essayons à présent cette même syntaxe en supprimant l'une des deux virgules situées entre "Genre du destinataire" et "Monsieur", soit la syntaxe suivante :
Genre=InputBox("Genre du destinataire","Monsieur")on voit que "Monsieur" est devenu le titre (title) de notre boîte de dialogue : comme dit précédemment, les doubles virgules ont donc leur importance.
Cliquez à nouveau sur "Annuler".essayons à présent de remplacer cette ligne par une ultime syntaxe :
Genre=InputBox(Default:="Monsieur", Prompt:="Genre du destinataire")
Le résultat obtenu est strictement identique à notre première boîte de dialogue, grâce aux arguments nommés.
récupérer la réponse : affecter une variable
Nous allons à présent affecter un nom de variable à chacune de nos questions. Pour simplifier, nous allons leur affecter le même nom que nos signets Word.
Je vous rappelle que ces derniers identifient un emplacement dans notre document Word.
Les noms de signets et de variables ne sont aucunement liés et peuvent donc être différents mais il est plus facile de se souvenir qu'il faut insérer la réponse "Genre" à l'emplacement "Genre", la réponse "Adresse" à l'emplacement correspondant plutôt que "RéponseA" à l'emplacement "Genre", "RéponseB" à l'emplacement "Adresse", etc.
Pour les distinguer, nous allons adjoindre le symbole $ à chaque nom de variable et écrire celle-ci avec une majuscule.
Nous verrons plus tard qu'il existe différents types de variables (texte, chiffre, date) et leur écriture.
Voici donc un tableau récapitulatif des signets des des variables correspondantes :
Signet Word |
Variable |
nom |
Nom$ |
rue |
Rue$ |
ville |
Ville$ |
genre |
Genre$ |
genre2 |
|
typecontrat |
TypeContrat$ |
qualite |
Qualite$ |
fixe |
Fixe$ |
lieutravail |
LieuTravail$ |
Voici donc notre code :
Sub promesse()
Genre$ = InputBox("Genre du destinataire", , "Monsieur")
Nom$ = InputBox("Prénom et NOM du destinataire")
Rue$= InputBox("Adresse du destinataire")
Ville$= InputBox("Code postal et VILLE")
TypeContrat$ = InputBox("Type de contrat", , "Contrat à durée indéterminée")
Qualite$ = InputBox("Fonction occupée")
Fixe$ = InputBox("Montant de la rémunération brute mensuelle")
LieuTravail$ = InputBox("Lieu de travail", , "Paris")
End Sub
nous allons à présent tâcher de récupérer nos réponses et de les insérer à l'emplacement voulu dans notre document final !