Insérer des données excel dans word

kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006 - 5 janv. 2006 à 10:44
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006 - 19 janv. 2006 à 14:56
Bonjour à tous,

Dans le cadre de mon travail, je suis amené à récupérer des données excel dans un document word, nayant jamais exécuté ce genre de travail, je sollicite votre aide.

Je vais essayer de vous décrire le travail à effectuer:

J'ai donc un document word déjà rédigé, je voudrais que pour chaque personnes(les noms et coordonnées sont récupérés dans le fichier excel) les données correspondant à ce nom soient insérées dans un tableau(déjà établi lui aussi). Lorsque un deuxième nom est trouvé, les données correspondant à ce nom sont récupérées dans un autre tableau identique au premier et ainsi de suite, avec au-dessus de chaque tableau, le nom de la personne, date,...

Voilà, j'espère que j'ai été clair sinon n'hésitez pas à me poser des questions.

Je vous remercie d'avance.

22 réponses

ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009
5 janv. 2006 à 11:14
Il faut que utilise les macro Word(outil->macro)
tu créer une macro et tu la modifies.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
5 janv. 2006 à 11:30
Tu sais me donner un peu plus d'explications sur la façon de faire cette macro, je n'en ai jamais fait.

Je te remercie.
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
5 janv. 2006 à 15:21
Bonjour et happy new year

Ce serait pas mal en effet, si tu pouvais essayer d'être un plus clair. Tu as des tableaux sur Excel et sur Word ou uniquement sur Word? Il faudrait que tu précises également comment sont présentées les données dans Excel. Tu veux présenter tes données dans Word, Ok, mais de quelle façon? Je suppose que les noms de champs (titres de colonnes)sur Excel sont les mêmes noms de champ dans Word.Un peu plus de détails, please.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
5 janv. 2006 à 15:46
Voici à quoi ressemble mes documents word, je dois donc récupérer les noms et les données qui correspondent à ce nom dans un fichier excel pour les insérer dans le tableau, le fichier excel est d'un type tout à fait normal(colonne, champs),les champs dans excel ne portenpas les mêmes noms, je ne peux malheureusement pas le coller ici car il contient des données que l'on ne peut pas communiquer(sous peine de sanction.

Nom :Année 200- 200


Prénom :


<!--[if !supportEmptyParas]--> <!--[endif]-->




OPA :Paramètre :Première
habilitation :



<!--[if !supportEmptyParas]--> <!--[endif]-->


<!--[if !supportEmptyParas]--> <!--[endif]-->

QC 2

<!--[if !supportEmptyParas]--> <!--[endif]-->,
<!--[if !supportEmptyParas]--> <!--[endif]-->

<!--[if !supportEmptyParas]--> <!--[endif]-->

QC3,
<!--[if !supportEmptyParas]--> <!--[endif]-->

<!--[if !supportEmptyParas]--> <!--[endif]-->

Conclusion
,

----

Date :

Type :

Réussi :oui/non,
Date :

Type :

Réussi :oui/non,
<!--[if !supportEmptyParas]--> <!--[endif]-->

Habilité jusqu’au : ,

----

Date :

Type :

Réussi :oui/non,
Date :

Type :

Réussi :oui/non,
Habilité jusqu’au : ,

----

Date :

Type :

Réussi :oui/non,
Date :

Type :

Réussi :oui/non,
Habilité jusqu’au : ,

----

Date :

Type :

Réussi :oui/non,
Date :

Type :

Réussi :oui/non,
Habilité jusqu’au : ,

----

Date :

Type :

Réussi :oui/non,
Date :

Type :

Réussi :oui/non,
Habilité jusqu’au :


<!--[if !supportEmptyParas]--> <!--[endif]-->



<!--[if !supportEmptyParas]--> <!--[endif]-->
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
6 janv. 2006 à 11:09
Bonjour,

Je comprends que tu ne puisses pas communiquer les infos d'Excel mais si j'ai bien compris (j'espère), tu récupères une info sur Excel eu tu l'insère dans Word de la façon suivante: Date:champ(info) Excel Type: champ (info) Excel Habilité jusqu'au: champ (info) Excel.
Si c'est bien ça, je pense qu'il s'agit d'un publipostage à automatiser: par exemple,ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="nom du champ ou de la donnée Excel". Cette donnée sera insérée dans Date: . Ensuite Selection.MoveDown Unit:=wdLine, Count:=2 et ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="" à insérer dans Type: . Par contre, je t'avoue que je ne comprends pas trop les instructions du type If End If. Est ce que tu veux insérer les infos sur Word à partie d'Excel selon une condition? Est-ce que par hasard tu ne pourrais pas céer un fichier Excel fictif mais ayant la même présentation?
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
6 janv. 2006 à 12:57
Merci,

Je vais essayer d'envoyer une reproduction du fichier excel lundi,
parceque je suis en congé aujourd'hui et je n'ai malheureusement pas de
copie ici.

Bon week-end.
0
ricomiracle Messages postés 195 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 30 novembre 2009
6 janv. 2006 à 14:05
Bonjour,

D'après ce que tu expliques, il s'agit d'un travail complexe. Personne
sur ce site (je ne rois pas en tt cas) ne fera le projet à ta place.

Je peux juste te conseiller de regarder du coté des macro et de la
bibliothèque ADODB. Ce sont les deux outils qui permettront de réaliser
ton projet.

Il existe des tutoriaux sur ce site et sur d'autres qui t'expliquezront comment ca marche.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
9 janv. 2006 à 12:07
Voici donc le fichier excel dans lequel je dois récupérer les données.


<col width=\"80\">
<col width=\"196\">
<col width=\"145\">
<col width=\"31\">
<col width=\"147\">
<col width=\"31\">
<col width=\"147\">
<col width=\"31\">
<col width=\"147\">
<col width=\"31\">
<col width=\"149\">
<col width=\"0\">
<col width=\"0\">
<col width=\"0\">
<col width=\"0\">
<col width=\"31\">
<col width=\"147\">
----

Section,
OPA,
NOMS()= à habiliter,
,
QC 2 Janvier 2005,
,
QC 2 février 2005,
,
QC 2 Mars 2005,
,
Distribution :
05M5A.1Date : 22/03/05,
,
Distribution : 05M4B,1Date : 05/04/05,
,
Distribution : 05M3B,1Date : 12/04/05,
,
QC 2 Avril 2005,

----

,
,
,
,
,
,
,

----

0,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

0,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

0,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

1,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

1,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

1,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
VDB,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
RZ
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
9 janv. 2006 à 13:51
Bonjour,

Malheureusement, il n'y a pas encore assez d'informations. Je vais te répondre mais il y a de fortes chances pour que ne fonctionne pas parfaitement, d'autant plus que tu devras compléter cette macro. Tout d'abord, tes données sur Excel doivent être présentées sous forme d'un tableau qui va devenir ainsi une source de données. Il ne doit y avaoir aucun espace avant ce tableau. Tu fermes ton document Excel et tu ouvres ton document Word.
Tu vas dans Outils/Nouvelle macro. Tu arrêtes la macro tout de suite. tu fais Outils/macro, tu sélectionne ta macro et tu fais Exécuter paa à pas et tu colles la macro suivante si tu travailles avec Word 2003:

Sub Macro ()
'Sub insérer des données de ton document Excel qui s'appelle (nom de ton fichier)dans mon document Word actif (ouvert) grâce à un publipostage

ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Documents and Settings\Administrateur\Mes documents\Nom de ton fichier.xls", _
LinkToSource:=True, _
Connection:="", SQLStatement:="", SQLStatement1 _:="", SubType:=wdMergeSubTypeOther 'Autres éléments (en fait les champs qui se trouvent dans Excel et qui sont à insérer dans Word
Selection.MoveDown Unit:=wdLine, Count:=3 'Quand tu ouvres ton document Word, le curseur se trouve automatiquement sur la première ligne c'est-à-dire <!--[if !supportEmptyParas]--> <!--[endif]-->. Tu dois l'amener sur la ligne Date:, soit la troisième ligne. Tu dois donc descendre le curseur de trois lignes.
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"QC_2_Janvier_2005" ' Sur cette troisième ligne, tu dois insérer ton premier champ qui se trouve dans la colonne Excel. J'ai inséré QC-2 Janvier 2005 si j'ai bien compris.
Selection.MoveDown Unit:=wdLine, Count:=1 'Tu descends le curseur d'une ligne pour arriver à la ligne Type :
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"Tu dois taper ici le nom du cham souhaité, c'est-à-dire le titre de colonne Excel"
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
End Sub


Sur Word 97, tu dois saisir le code suivant:

Sub Macro ()
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"\\Tu dois taper ici le chemin de ton fichier Excel\Nom de ton fichier Excel.xls", _
LinkToSource:=True,
Connection:="Feuille de calcul entière", SQLStatement:="", SQLStatement1 _
:=""
ActiveDocument.MailMerge.EditMainDocument
Selection.MoveDown Unit:=wdLine, Count:=3 'Quand tu ouvres ton document Word, le curseur se trouve automatiquement sur la première ligne c'est-à-dire <!--[if !supportEmptyParas]--> <!--[endif]-->. Tu dois l'amener sur la ligne Date:, soit la troisième ligne. Tu dois donc descendre le curseur de trois lignes.
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"QC_2_Janvier_2005" ' Sur cette troisième ligne, tu dois insérer ton premier champ qui se trouve dans la colonne Excel
Selection.MoveDown Unit:=wdLine, Count:=1 'Tu descends le curseur d'une ligne pour arriver à la ligne Type :
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"Tu dois taper ici le nom du cham souhaité, c'est-à-dire le titre de colonne Excel"
End Sub
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
9 janv. 2006 à 14:01
J'ai un boulot urgent à terminer, puis j'essaye ton code dès que je peux, je te tiens au courant.

Je te remercie énormément pour ton aide.

Bonne journée à toi.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
11 janv. 2006 à 09:26
Bonjour,

voila, j'ai testé ta macro, ça fonctionne, mais je dois essayer de modifier certaines choses en fonction de mon travail.

Je suis débordé pour le moment, j'ai des travaux urgents à terminer, puis je m'y applique.

Je te remercie encore pour ton aide et je te tiens au courant pour la suite(j'aurais peut-être encore besoin de ton aide)

Bonne journée à toi
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
12 janv. 2006 à 08:28
Bonjour,

Merci de 'indiquer le code final auquel tu est arrivé parce que comme tu l'as compris pour l'instant, il est incomplet. A propos, Selection.MoveDown Unit:=wdLine, Count:=2 et non 1 'Tu descends le curseur de 2 lignes pour arriver à la ligne Type puis qu'il y a dans ton tableau 2 sauts de ligne après Date.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
12 janv. 2006 à 08:58
Ok, pas de problème, j'y travaille chaque fois que j'ai un peu le temps car j'ai bcp de boulot pour le moment,

dès qu'il est terminé je te le fais parvenir.

Bonne journée.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
17 janv. 2006 à 09:23
Salut,

C'est à nouveau moi, je me suis penché sur le problème, mais n'étant pas doué pour la programmation je ne m'en sorts pas.

J'ai essayé de faire une boucle pour que à chaque fois que la cellule C(à partir de C2) n'est pas vide, il insère les données correspondants au nom se trouvant dans cette cellule, et depuis quand j'exécute la macro il n'affiche plus rien. Je te colle mon code et je te remercie d'avance pour ton aide.

Si qqun d'autre a une solution, tts vos aides sont les bienvenues, car comme vous pouvez le conatater je n'ai aucune expérience en vba.

Sub test2()

'ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range

ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\test.xls", _
LinkToSource:=True, _
Connection:="Feuille de calcul entière", SQLStatement:="", SQLStatement1 _
:=""
For Each c In Range("B10", Range("B10").End(xIDown))
If c <> "" Then
ActiveDocument.MailMerge.EditMainDocument
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
("C2")
Selection.MoveDown Unit:=wdLine, Count:=1 'Quand on ouvre le document Word, le curseur se trouve automatiquement sur la première ligne c'est-à-dire <!--[if !supportEmptyParas]--> <!--[endif]-->. il faut l'amener sur la ligne Date:, soit la troisième ligne. il faut donc descendre le curseur de trois lignes.
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"NOMS" ' Sur cette troisième ligne, il faut insérer le premier champ qui se trouve dans la colonne Excel
Selection.MoveDown Unit:=wdLine, Count:=2 'on descend le curseur d'une ligne pour arriver à la ligne Type :
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
"B1"
c = c + 1
End If
End Sub

Merci à tous
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
17 janv. 2006 à 12:59
Bonjour,

Je n'ai pas trop le temps de regarder en détail pour l'instant mais je peux dores et déjà tedire que ta macro ne peut pas fonctioner parce qu'il y a deux débuts de macro: en effet il y a Sub test et Private Sub. Il ne peut y avoir qu'un seul Sub en début de macro. Ensuite tu as mis
'ActiveDocument.MailMerge.MainDocumentType wdFormLetters. Or tout ce qui commence par ' est écrit automatiquement en vert et n'est pas lue par le système mais constitue simplement un commentaire pour toi ou pour tout autre utilisateur. Autrement dit, ce n'est pas un instruction et c'est facultatif.Or c'est bel et bien une instruction. Tu dois écrire 'ActiveDocument.MailMerge.MainDocumentType wdFormLetters sans l'apostrophe.
Je pense qu'il doit manquer un morceau d'instruction.
Visiblement tu bosses avec Word 97. Tu peux me le confirmer?

A+
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
17 janv. 2006 à 13:11
Oui, c'est bien word 97.

Je te remercie encore pour tes réponses si rapides.

Quand tu auras le temps de regarder plus en détail, tiens moi aucourant, en attendant j'essaye d'avancer avec les informations que je trouve sur le net
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
17 janv. 2006 à 13:49
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
17 janv. 2006 à 13:55
A propos ActiveDocument.MailMerge.MainDocumentType = wdFormLetters ne peut pas être avant Private Sub car par définition Private Sub est ta première instruction sauf si tu gardes bien Sub Test() mais alors tu supprimes bien Private Sub. Dans les deux cas ActiveDocument.MailMerge.MainDocumentType = wdFormLetters ne peut être une première instruction. Par ailleurs Worksheet s'applique à une macro Excel. Or puisque tu insères tes éléments dans Word,c'est une macro Word que tu dois saisir. Je te confirme qu'il manque un morceau. J'essaierai de voir plus en détail quand j'aurai du temps.
0
kennylux Messages postés 13 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
17 janv. 2006 à 14:41
Ok, merci à toi
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
19 janv. 2006 à 12:43
Bonjour,

C'est stupide mais je ne sais pas comment coller un tableau sur ce site. Quand je copie sur Excel et Word et colle tes tableaux ici, le quadrillage disparaît et le contenu est en vrac. Peux-tu me dire comment faire afin que je puisse te guider dans ta macro?

Tchao
0
Rejoignez-nous