Import données excel vers word

B

Bruno

Guest
Bonjour le forum,

J'ai plusieurs lignes sur une feuille de calcul excel et je souhaite importer séparément (lignes par lignes) sur un modèle de feuille word et imprimer ces feuilles.


Merci pour l'aide
 
A

Anynnor

Guest
Salut Bruno,

Pour pouvoir garder les mêmes formats que dans excel, dans Word, il faut que tu utilise le menu : Edition, collage spécial, Feuille de calcul Excel et puis cela dépendra si tu souhaites que les données soient mises à jour automatiquement ou pas, si oui, clic sur "avec liaison".

J'espère avoir répondu à ta question

A+

Anynoor
 
B

Bruno

Guest
Bonjour,

En fin de compte ce que je souhaite est plus compliqué que cela, j'ai dans word un document avec du texte et je souhaite inséré à des endroits bien précis (style publipostage) des données depuis une feuille excel. En sachant que dans excel j'ai une ligne avec des données, et je souhaite que sur une feuille apparaissent ces données, et ainsi de suite sur les autres pages. Le nombre de pages étant défini par le nombre de ligne de excel.

Voila j'èspére avoir mieux formulé ma demande.

Je suis sur le projet depuis plusieurs mois, et je n'arrive pas.

Merci de l'aide.

Bruno
 
M

michel

Guest
bonjour Bruno , bonjour Anynnor

la macro ci-dessous permet d'exporter les valeurs des cellules A1 à A3 vers des signets d'un document word nommé "monfichier.doc"
dans l'exemple , les signets positionnés aux endroits de ton choix doivent etre nommés "Signet1 , signet2 et Signet3


Sub exportDonneesDansSignetsWord()
'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 i As Byte

Set WordApp = CreateObject("word.application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\michel\monFichier.doc") 'ouvre document Word
WordApp.Visible = False 'word masqué pendant l'operation
For i = 1 To 3
'les signets du document Word sont nommés Signet1 , Signet2 , Signet3
WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1)
Next i

WordApp.Visible = True 'affiche le document Word
'WordDoc.PrintOut 'imprimer

'WordDoc.Close True 'ferme le document word en sauvegardant les données
'WordApp.Quit 'ferme la session Word
End Sub


bonne journée
MichelXld
 

AGS028

XLDnaute Nouveau
Re : Re: Import données excel vers word

@MichelXLD

Super !
ça marche trop bien !

Pour aller plus loin:
comment créer une copie du fichier word AVANT INSERTION DES SIGNETS
parce que j'aimerai que mon fichier type reste inchangé.:rolleyes:

Merci :)
 

curlcie

XLDnaute Nouveau
Re : Import données excel vers word

Bonjour à tous,

Je me permets de remonter ce post car il correspond tout à fait à ce que je veux faire mais je bloque à l'une des lignes.
Pour le passage à la ligne : "WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1)"
Il me met un message d'erreur de type :
"erreur d'exécution 5941 erreur définie par l'application ou par l'objet"

J'ai pourtant activé la bibliothèque word 12.0

Est-ce parce que j'ai excel 2007 et non 2010 ?

Merci de vos réponses

Curlcie
 

Edie26

XLDnaute Nouveau
Re : Import données excel vers word

Bonjour à tous,
J'ai le même soucis que Curlcie: ma ligne "WordDoc.Bookmarks(" Signet" & i).Range.Text = Cells(i,10) " me donne l'erreur 5941.
J'ai tenté de refaire tous mes signets dans mon fichier word, mais cela n'a pas fonctionné. Il semble que la macro ne reconnaît plus les signets puisque cette erreur est arrivée après plusieurs semaines d'utilisation de la macro sans erreur.
J'espère que quelqu'un pourra m'aider!
 

Modeste

XLDnaute Barbatruc
Re : Import données excel vers word

Bonjour Edie26 et bienvenue,

Apparemment, à la première exécution de la macro, les signets sont supprimés du document Word.
Recrée les signets (ce devrait être la dernière fois :p) et modifie ton code comme suit:
VB:
Sub exportDonneesDansSignetsWord()
'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 i As Byte

Set WordApp = CreateObject("word.application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open("D:\Luc\XLD\Signets\monFichier.docx") 'ouvre document Word
WordApp.Visible = False 'word masqué pendant l'operation
For i = 1 To 3
'les signets du document Word sont nommés Signet1 , Signet2 , Signet3
Set monSignet = WordDoc.Bookmarks("Signet" & i).Range
monSignet.Text = Cells(i, 1)
WordDoc.Bookmarks.Add "Signet" & i, monSignet
Next i

WordApp.Visible = True 'affiche le document Word
'WordDoc.PrintOut 'imprimer

'WordDoc.Close True 'ferme le document word en sauvegardant les données
'WordApp.Quit 'ferme la session Word
End Sub
Testé sur Office 2010 ... ça semble fonctionner
 

GENTILE

XLDnaute Nouveau
Bonjour,

Votre sujet me semble le plus adéquat pour exposer mon problème,
Je me suis baser sur votre code afin de réaliser mon projet, mais apparemment étant plus que novice en VB excel, je suis confronté à divers problèmes.

Mon but est de remplacer des signets nommés "test1" et "test2" par les valeurs des Cellule X1 dans Feuille X1 pour "test1" et valeur en X2 dans feuille X2 pour "test2".

Pourriez vous m'aider dans ma démarche s'il vous plaît?

Code:
Sub exportDonneesDansSignetsWord()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library

Set WordApp = CreateObject("word.Application") 'ouvre session word
WordApp.Documents.Open "C:\Users\dgentile\Desktop\XXX.doc" 'ouvre document Word
WordApp.Visible = True 'word visible pendant l'operation

'les signets du document Word sont nommés test1 , test2
Set monSignet = WordDoc.Bookmarks("test1").Range
monSignet.Text = Sheets("Feuille X1").Range("X,1").Value
WordDoc.Bookmarks.Add "test1", monSignet

Set monSignet = WordDoc.Bookmarks("test2").Range
monSignet.Text = Sheets("Feuille X2").Range("X,2").Value
WordDoc.Bookmarks.Add "test2", monSignet

WordDoc.Close True 'ferme le document word en sauvegardant les données

End Sub

L'ouverture du document se fait sans problème mais de suite après, Erreur d'éxécution '424': Objet requis
Je souhaiterais aussi ajouter une tempo avant la modification des signets car le Word à générer et plutôt lourd.

je travaille de excel 2007 vers word 2003 :( je sais mais bon petit budget :)

Merci par avance pour votre aide.
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Bonsoir GENTILE et bienvenue,

de suite après, Erreur d'éxécution
... disons que ça n'est pas extrêmement précis comme indication. Tu as essayé en mode pas-à-pas pour voir à quelle ligne ça coinçait?

On ne sait pas, par ailleurs, si tu as bien activé la référence, comme indiqué. On sait encore moins si les signets sont correctement définis ... si l'erreur persiste, un bout de ton fichier répondrait sans doute à certaines questions.

La seule chose que je peux dire à ce stade est que la syntaxe en gras et rouge ci-après est surprenante:
monSignet.Text = Sheets("Feuille X1").Range("X,1").Value ... même chose 2-3 lignes plus bas
 

GENTILE

XLDnaute Nouveau
Bonjour, modeste, désolé pour cette réponse tardive,

Merci par avance pour ton aide, j'ai trouvé la solution tout seul :) :

Set monSignet = WordDoc.Bookmarks("Admin16").Range
monSignet.Text = Sheets("Administratif").Range("C5").Value

Mais je suis confronté à un autre problème: avec ces lignes de commandes, je copie l’intégralité de la cellule c'est à dire avec tout les chiffres après la virgule, mais je ne souhaite que 2 ou 3 trois chiffres après la virgule comment puis-je résoudre cela? Quelle commande dois-je ajouter ou modifier pour arrondir à 2 ou 3 chiffres après la virgule.

Cordialement. Damien
 

Modeste

XLDnaute Barbatruc
Bonjour GENTILE (et puis Damien aussi :))

Pas le temps de recréer un document Word avec des signets pour tester, mais il me semble que ceci pourrait fonctionner:
Code:
monSignet.Text = round(Sheets("Administratif").Range("C5").Value,2)
 

Modeste

XLDnaute Barbatruc
Bonsoir,

VB:
Set WordDoc = WordApp.Documents.Open("...
... est devenu, chez toi:
VB:
WordApp.Documents.Open "

WordDoc n'est donc pas initialisé et tu l'utilises ensuite en écrivant WordDoc.Bookmarks!?

En recopiant fidèlement le code proposé au message #8 (et en adaptant les chemin, nom de classeur, nom de feuille, etc) ça fonctionne toujours chez moi o_O
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16