====== Activité 6 : Excel et Word ======
Utilisez le même fichier Excel {{:dev:excelvba:td_excel_1.xls|}} contenant le modèle de facture.
===== Introduction à la programmation objet VBA=====
Dans Excel, la programmation VBA permet de **piloter** d'autres applications Microsoft et échanger des données.
===== Travail à faire =====
==== Lancer Word depuis Excel ====
Dans le classeur Excel **td_excel_1.xls** et écrivez la procédure **LancerWord()** dans le module **DCG**. Puis ajoutez un bouton permettant de lancer cette procédure.
Code VBA à utiliser :
Set WordApp = CreateObject("word.application")
WordApp.Visible = True
Exécutez la procédure **LancerWord()** à partir de votre bouton et vous verrez que Word se lance mais sans aucun document.
==== Créer un document Word ====
Complétez votre procédure **LancerWord()** pour créer un document Word avec les informations suivantes :
* mettre un titre **Confirmation Achat**
* Titre : centré
* Style de police : gras
* Taille de police : 20
Code VBA à utiliser :
Set docWord = WordApp.Documents.Add
With docWord.Sections(1).Range
.Text = "Confirmation Achat" & Chr(10)
.Font.Bold = True
.Font.Size = 20
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Le caractère **&** permet de faire des concaténations de chaînes de caractères.
L'instruction **Chr(10)** permet de gérer un saut de ligne. Il est possible d'utiliser des constantes VBA ce qui est plus facile à utiliser. [[http://www.commentcamarche.net/contents/1165-vbscript-les-constantes[Les constantes VB]]
La notation **With ... End With** permet de simplifier l'écriture des commandes qui concernent le même objet. Sinon il aurait fallu écrire :
Set docWord = WordApp.Documents.Add
docWord.Sections(1).Range.Text = "Confirmation Achat" & Chr(10)
docWord.Sections(1).Range.Font.Bold = True
docWord.Sections(1).Range.Font.Size = 20
docWord.Sections(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
==== Enregistrer le document Word ====
Complétez votre procédure **LancerWord()** pour enregistrer votre document Word nouvellement créé :
Code VBA à utiliser :
Dim strchemin As String
strchemin = ThisWorkbook.Path & "\"
With docWord
.SaveAs (strchemin & "ConfirmationFacture.docx")
.Close savechanges:=wdDoNotSaveChanges
End With
==== Fermer le document Word ====
Pour fermer le document Word il suffit de quitter le logiciel et de détruire les variables objets qui ont été créées :
Code VBA à utiliser :
WordApp.Quit
Set docWord = Nothing
Set WordApp= Nothing
MsgBox strchemin & "ConfirmationFacture.docx"
==== Retour au menu de Excel & VBA ====
[[dev:excelvba:accueil|Excel et VBA (Visual Basic pour Application)]]