importer fichier WORD vers EXCEL

F

Filipus

Guest
Bonsoir le Forum
Bonsoir tout le monde

Une petite question me tracasse, je m'explique

Je voudrais trouver un code VBA, dans le cadre d'une apllication perso)
qui me permette d'importer un tableau multicolonnes inséré sur une ou plusieurs pages Word vers un fichier Excel.
(Sachant que d'une façon générale, le fichier word possède quelques lignes de présentation, et le tableau qui m'interesse, que je veux importer sous excel suit cette présentation ( voir exemple)

Manuelle je sais faire, je sélectionne mon tableau sous Word, puis copier coller sous excel.

MAis Mon application en VBA est sous Excel, et je voudrais, à partir d'un bouton mis dans un USF faire cette transformation.

PS: suis light de chez light en VBA.

Merci par avance pour votre aide

Filipus
 

Pièces jointes

  • essai.zip
    3.8 KB · Affichages: 493
  • essai.zip
    3.8 KB · Affichages: 516
  • essai.zip
    3.8 KB · Affichages: 526
M

michel

Guest
bonsoir Filipus

Cette macro est lancée depuis Excel et permet de coller le tableau de ton document Word dans la cellule A1 . J'ai essayé de faire quelques annotations dans la macro pour t'aider .
il te restera à l'adapter à ton projet , notamment l'index de ton tableau ( 2 dans cet exemple )


Sub copieTableauWordVersExcel()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As String

'le document Word est supposé fermé avant le lancement de la macro
Fichier = "C:\Documents and Settings\michel\essai.doc" 'adapter le chemin
Set WordApp = CreateObject("Word.Application")'creation session Word
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word

WordDoc.Tables(2).Range.Copy 'copie du tableau Word
'dans Word chaque tableau est indexé
'ici l'index est à 2 car le premier index correspond au cadre autour du titre du
'document Word

Range("A1").Select
ActiveSheet.Paste 'collage des données dans Excel

WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
End Sub


bonne soiree
MichelXld
 
F

Filipus

Guest
Re le Forum
Re Michel

Merci pour ta réponse aussi rapide qui me met sur la voie....MAIS....

Après avoir modifié dans ta macro, le chemin de mon fichier Word, et laissé l'index 2 dans l'exemple joint initalement, je lance la macro et j'obtiens un message d'erreur à la ligne:
Dim WordApp As WordApplication

Le msg d'erreur: Erreur de compliation
type défini par utilisateur non défini.

Voilà, j'avoue que je suis incapable de résoudre cela. A titre indicatif, je suis sous XP familial et Office 2002.

En tout état de cause Merci pour ton aide, et bravo à ceux qui animent ce forum.
Filipus
 
M

michel

Guest
rebonsoir Filipus

as tu préalablement activé la référence Microsoft Word 10.0 Object Library ?

dans visual Basic Editor (Alt F11) :
le menu Outils ,
Références
dans la boite de dialogue qui s'affiche tu coches cette référence
et tu cliques sur le bouton OK


bonne soirée
MichelXld
 
F

Filipus

Guest
Re Michel


EUREKA Ca marche

En fait, je voyais Micrososft Office 10.0....... coché, et j'ai confondu avec Word.....qui est plus bas dans la liste.

Ton aide est fabuleuse pour moi, et ca marche impeccable.

Maintenant il me reste, pour le fun, a trouver une petite astuce, car en fait le fichier, ici essai.doc peut s'appeler dupont.doc, Martin.doc.... Est-il possible de dire à la macro si à tel endroit il y a un - ou plusieurs - fichiers.doc, les importer dans un ou plusieur fichier excel.

C'est peut être un peu trop demander, mais bon, c'est peut être plus simple que ce que je m'imagine.

En tout état de cause, je te remercie Michel pour cette aide précieuse.
A bientôt peut-être
Filipus
 
M

michel

Guest
bonjour Filipus

si tu souhaites choisir le document Word , tu peux tester cette nouvelle version . la boite de dialogue qui s'afficher permet de sélectionner un document dans le répertoire de ton choix


Sub copieTableauWordVersExcel_V02()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As Variant

'affichage boite de dialogue pour choisir un document Word
Fichier = Application.GetOpenFilename("Text Files (*.doc*), *.doc*")
If Fichier = False Then Exit Sub

'le document Word est supposé fermé avant le lancement de la macro
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word

If WordDoc.Tables.Count < 2 Then 'verifie si le document possede bien le tableau
WordDoc.Close False
WordApp.Quit
MsgBox "Le document sélectionné : " & Chr(10) & Chr(10) & _
Fichier & Chr(10) & Chr(10) & "ne posséde pas le tableau spécifié", , "Message"
Exit Sub
End If

WordDoc.Tables(2).Range.Copy 'copie du tableau Word
'dans Word chaque tableau est indexé
'ici l'index est à 2 car le premier index correspond au cadre autour du titre du
'document Word

Range("A1").Select
ActiveSheet.Paste 'collage des données dans Excel

WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
End Sub


bonne journée
MichelXld
 
F

Filipus

Guest
Bonsoir tout le Forum
Bonsoir Michel

Je viens de découvrir ta réponse. GENIAL, ca marche super bien.

Si j'osais, j'abuserais en demandant si l'enregistrement du fichier Word dans excel peut se faire dans un fichier autre que celui à partir duquel je lance la macro (qui me sert juste de présentation où j'ai mon Userform avec menu..)
Il pourrait s'agir d'un fichier excel dans un dossier prédéfini dans la macro.

Merci pour ta gentillesse et pour ton aide qui me fait faire un bon en avantn et gagner beaucoup de temps.

Bonne soirée à tous

Filipus
 
F

Filipus

Guest
Bonsoir tout le monde
Bonsoir Michel

Grace à ton Aide Michel tout marche à merveille.
Mais j'ai constaté à l'usage que parfois le format des tableaux Word, différe d'un document à l'autre, ce qui à l'importation sous excel me pose problème.
Manuellement, si je sélectionne le tableau à partir de la deuxième ligne, je n'ai plus de problème. Il me reste à ajouter une ligne de titres.

Donc j'aimerais importer le tableau de Word, en commençant à la deuxième ligne. Et la je ne sais comment faire.

Si quelqu'un à une idée, merci.

Bonne soirée à tous.
Filipus
 

DadyCool

XLDnaute Nouveau
Re : Re: importer fichier WORD vers EXCEL

Bonjour à tous,
J'ai fait quelques recherches à ce sujet, et j'ai trouvé une correspondance qui répond à peu de chose près à mon besoin. Je vais réafficher le code VB donné par Michel, que je tiens à remercier au passage.
Dans ma situation, j'ai un document Word, où se trouvent des informations que je souhaite récupérer sous forme de tableau. Pour les extraire, je dois me positionner sur le mot clé (qui est toujours le même dans chaque document), puis récuperer le texte qui le suit (sur une longueur que je défini, ou je m'arrête à la rencotre du mot Clé suivant.
Votre aide est toujours la bienvenue.
Merci
Solution déjà soumise sur le site :
bonjour Filipus

si tu souhaites choisir le document Word , tu peux tester cette nouvelle version . la boite de dialogue qui s'afficher permet de sélectionner un document dans le répertoire de ton choix


Sub copieTableauWordVersExcel_V02()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As Variant

'affichage boite de dialogue pour choisir un document Word
Fichier = Application.GetOpenFilename("Text Files (*.doc*), *.doc*")
If Fichier = False Then Exit Sub

'le document Word est supposé fermé avant le lancement de la macro
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word

If WordDoc.Tables.Count < 2 Then 'verifie si le document possede bien le tableau
WordDoc.Close False
WordApp.Quit
MsgBox "Le document sélectionné : " & Chr(10) & Chr(10) & _
Fichier & Chr(10) & Chr(10) & "ne posséde pas le tableau spécifié", , "Message"
Exit Sub
End If

WordDoc.Tables(2).Range.Copy 'copie du tableau Word
'dans Word chaque tableau est indexé
'ici l'index est à 2 car le premier index correspond au cadre autour du titre du
'document Word

Range("A1").Select
ActiveSheet.Paste 'collage des données dans Excel

WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
End Sub


bonne journée
MichelXld
 

Antony

XLDnaute Nouveau
Re : importer fichier WORD vers EXCEL

Bonjour à tous,

Étant novice sur VB, je tiens tout d'abord à vous remercié pour l'aide que m’a apportée ce sujet.
Actuellement, j'utilise la dernière version de DadyCool comme base de mon programme.
Toute fois il me reste juste un problème que je n'arrive pas a résoudre.
La macro peut repérer les différents tableaux dans le document Word (c'est tout à fait ce qu'il me faut) à un point prés.
J'utilise des documents Word avec des mises en forme similaires (deux tableaux) sur chaque page, mais mon nombre de pages diffère (donc le nombre de tableaux à copier aussi) selon le document Word choisi.
Et-il possible d'introduire une condition pour que la macro puisse copier 1 tableau sur 2 sur chaque page et ceci sur un nombre de pages indéfini.

Comme en jaune ci-dessous :

Sub copieTableauWordVersExcel_V02()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As Variant

'affichage boite de dialogue pour choisir un document Word
Fichier = Application.GetOpenFilename("Text Files (*.doc*), *.doc*")
If Fichier = False Then Exit Sub

'le document Word est supposé fermé avant le lancement de la macro
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word

If WordDoc.Tables.Count < 2 Then 'verifie si le document possede bien le tableau
WordDoc.Close False
WordApp.Quit
MsgBox "Le document sélectionné : " & Chr(10) & Chr(10) & _
Fichier & Chr(10) & Chr(10) & "ne posséde pas le tableau spécifié", , "Message"
Exit Sub
End If

WordDoc.Tables(1).Range.Copy 'copie du tableau Word
'dans Word chaque tableau est indexé
'ici l'index est à 2 car le premier index correspond au cadre autour du titre du
'document Word

Range("A9").Select
ActiveSheet.Paste 'collage des données dans Excel

WordDoc.Tables(3).Range.Copy
Range("A44").Select
ActiveSheet.Paste


WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
End Sub

Je vous remercie par avance.
Antony
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : importer fichier WORD vers EXCEL

Bonjour Dady cool et Antony et bienvenue tous deux sur le forum

croyez-vous trouver une réponse en réveillant un fil de discussion endormi depuis bientôt 8 années

il vaudrait mieux recréer un nouveau fil

à+
Philippe
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 881
Membres
103 009
dernier inscrit
dede972