Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== 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 : <code vb> Set WordApp = CreateObject("word.application") WordApp.Visible = True </code> 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 : <code vb> 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 </code> 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 : <code vb> 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 </code> ==== Enregistrer le document Word ==== Complétez votre procédure **LancerWord()** pour enregistrer votre document Word nouvellement créé : Code VBA à utiliser : <code vb> Dim strchemin As String strchemin = ThisWorkbook.Path & "\" With docWord .SaveAs (strchemin & "ConfirmationFacture.docx") .Close savechanges:=wdDoNotSaveChanges End With </code> ==== 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 : <code vb> WordApp.Quit Set docWord = Nothing Set WordApp= Nothing MsgBox strchemin & "ConfirmationFacture.docx" </code> vba/td6excelword.txt Dernière modification : 2023/01/20 23:29de pb