Mise à jour par Brad Jones le 25 août 2017.
Dans votre quotidien professionnel, il est fréquent de devoir copier-coller des données de Microsoft Excel vers Word, ou vice versa. Les rapports écrits basés sur des données mises à jour dans une feuille de calcul sont courants. Excel excelle pour les graphiques professionnels ou le suivi de projets, mais Word reste idéal pour la rédaction de rapports structurés.
Dans ce tutoriel expert, découvrez les scripts VBA qui connectent les données Excel à vos documents Word, pour une intégration fluide et automatisée.
Intégrer des données Excel dans Word est simple une fois les références VBA configurées et la syntaxe maîtrisée.
Pour cet exemple, utilisons une feuille Excel simple listant les dépenses annuelles. En pratique, cela fonctionne avec des fichiers complexes à multiples onglets.
Tant que vous connaissez la localisation des données, VBA les récupère facilement.
Voici un exemple de feuille de calcul :

Pour un rapport élégant regroupant les dépenses, intégrez des contrôles comme des zones de texte et libellés. Activez l'onglet Développeur, sélectionnez Mode Création dans Contrôles, et utilisez les Outils hérités.

Insérez un Libellé :

Positionnez-le, puis nommez-le via Clic droit > Propriétés > (Nom) pour que VBA l'identifie.

Ajoutez un Bouton de commande des Outils hérités, double-cliquez pour ouvrir l'éditeur VBA. Plus tard, liez-le à l'événement Document_Open().
Pour lier Word à Excel, référencez la bibliothèque Excel.
Dans l'éditeur VBA, allez dans Outils > Références, cochez Bibliothèque d'objets Microsoft Excel 16.0.

Voici un script VBA simple pour extraire et afficher les données :
Private Sub CommandButton1_Click()
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Set exWb = objExcel.Workbooks.Open("C:\Users\Brad\Desktop\expenses.xlsx")
ThisDocument.total_expenses.Caption = exWb.Sheets("Sheet1").Cells(12, 2)
exWb.Close
Set exWb = Nothing
End SubCe code ouvre le fichier Excel, extrait la valeur de la cellule spécifiée et l'affiche dans le libellé total_expenses. Adaptez le chemin et le nom.
Enregistrez en Document Word compatible avec les macros :

Voici le résultat :

Pour aligner texte et données, intégrez le texte statique dans le code VBA avec l'opérateur & :

Private Sub CommandButton1_Click()
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Set exWb = objExcel.Workbooks.Open("C:\Users\Brad\Desktop\expenses.xlsx")
ThisDocument.total_expenses.Caption = exWb.Sheets("Sheet1").Cells(12, 2)
ThisDocument.total_hotels.Caption = "Hôtels : " & exWb.Sheets("Sheet1").Cells(5, 2)
ThisDocument.total_dining.Caption = "Dîner au restaurant : " & exWb.Sheets("Sheet1").Cells(2, 2)
ThisDocument.total_tolls.Caption = "Péages : " & exWb.Sheets("Sheet1").Cells(3, 2)
ThisDocument.total_fuel.Caption = "Carburant : " & exWb.Sheets("Sheet1").Cells(10, 2)
exWb.Close
Set exWb = Nothing
End SubRésultat final :

Automatisez sur Document_Open() pour masquer le bouton. Ouvrez le document : les données se mettent à jour seules. Imprimez en un clic !
Quelles autres applications VBA imaginez-vous ? Partagez vos idées en commentaires.
Crédit image : Punyaphat Larpsomboon via Shutterstock.com
[]