====== 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)]]