Récupération données excel dans word depuis excel

Résolu/Fermé
Svinep Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 7 avril 2016 - 31 mars 2016 à 11:12
Svinep Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 7 avril 2016 - 7 avril 2016 à 10:59
Bonjour,
Je débute sur la création de macro en VBA.
Mon problème est le suivant: Je cherche à récupérer des données présentes dans un fichier excel(Données d'entrée-DE) qui se trouve dans un fichier word pour les intégrer dans un autre fichier excel(Tableau suivi-TS) récapitulatif.
J'ai déjà réussi à faire une extraction des fichiers word du dossier source dans mon TS avec un lien hypertexte pour pouvoir les ouvrir depuis le TS.
J'ai bien trouvé des tutos pour ouvrir/récupérer des données présentes dans un Word, mais pour ouvrir dans ce dernier un fichier Excel et en faire une extraction dynamique, non.
Je précise que l'ensembles des fichier ciblés(DE) ont tous une partie de leur noms similaire.
Si quelqu'un à une solution, Je suis preneur!!!
Merci d'avance.
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
31 mars 2016 à 11:46
Bonjour,

Ton explication est confuse!

Pour piloter Word depuis Excel:

http://www.info-3000.com/vbvba/automation.php

Pour ouvrir un classeur Excel depuis Word:

https://www.excel-downloads.com/threads/ouvrir-excel-depuis-une-macro-word.46701/


voilà
0
Svinep Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 7 avril 2016
4 avril 2016 à 10:35
Bonjour,
Merci pour la réponse.

Effectivement ce qui n'était pas très clair, et que je vais préciser:

Je souhaite récupérer, depuis Excel, une donnée présente dans un Excel qui se trouve en objet (OLE) dans un Word.
Le problème n'étant pas de récupérer une info sur un Word, mais plutôt de réussir à ouvrir un objet Excel présent dans le document Word.

Je pense que une fois la manip faite, il sera facile de récupérer les info nécessaires.
SI je le découpe en étapes, cela donne:
1) Ouvrir depuis Excel un fichier Word.
2) Ouvrir le fichier excel en objet (OLE) dans le fichier Word.
3) Récupérer les données de ce fichier Excel pour les faire apparaitre dans le premier fichier Excel

J'éspère avoir été plus clair...
0
Svinep Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 7 avril 2016
7 avril 2016 à 10:59
Ca y est! Une solution à été trouvée:


Public Sub TestCopie()

'Je définis deux objets, un qui va stocker la représentation de mon "Application Word" et l'autre de mon "Document Word
Dim WordApp, WordDoc As Object
Dim file, dossier As String

file = ThisWorkbook.Path & "\como\COMO-1.docx"

'On crée un objet "Word.Application", il se lance automatiquement
Set WordApp = CreateObject("Word.Application")

WordApp.Visible = True

'On ouvre le document word (COMO en l'occurence) et on stocke sa représentation pour pouvoir le manipuler dans notre objet "WordDoc"
Set WordDoc = WordApp.Documents.Open(file)

'InlineShapes est une énumération des objets présents dans word, le (1) correspond au numéro (il faudra le déterminer!) .OLEFormat.Open ouvre le document
'en résumé, on OUVRE le PREMIER OBJET présent dans le DOCUMENT WORD

'pour déterminer le inlineshape à ouvrir, tu pourras faire un for each objetpresent in WordDoc.InlineShapes , si le OLEFormat.Iconlabel = lenomquetuveux alors
'tu sauras que ton i correspondra à ton InlineShape à ouvrir, je te laisse poser ça tranquilou

WordDoc.InlineShapes(1).OLEFormat.Open

'en s'ouvrant, il devient l'activeworkbook (heureusement d'ailleurs sinon ça allait être très très très galère), on peut donc utiliser la propriété activeworkbook pour
'cibler les valeurs
Workbooks("DEMO.xlsm").Sheets(1).Range("C5:D5").Value = ActiveWorkbook.Sheets(1).Range("A2:B2").Value

'à la fin de ta boucle de ligne (car il va falloir faire ça pour chaque ligne de ton como, tu pourras fermer le workbook et le word.
ActiveWorkbook.Close
WordApp.Quit

End Sub

Un grand merci à Julien F. pour avoir trouvé cette solution!
0