Liaison Excel vers deux documents word

Grenoble87

XLDnaute Nouveau
Bonjour,

Etant débutant dans le monde du VBA j'aurais besoin de quelques conseils ou astuces afin construire un outils qui me permettrait de me faciliter la vie.
Voila mon problème:

Pour notre client nous devons faire deux rapports contenant les mêmes tableaux et des paragraphes identiques mais pas le même mise en page, ni le même ordre. Mon objectif serait de remplir un seul fichier excel et de créer un programme qui me remplissent les champs sur chaque rapports. Comment faire une liaison entre word et excel?
Comment localiser un lieu précis dans un fichier word.

Merci d'avance.
 

chris

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonjour

Le plus simple sans VBA est copier l'élément Word puis collage spécial avec liaison dans Word à l'endroit voulu.

A chaque ouverture du word il est possible d'actualiser et donc d'avoir le reflet des éventuels changements intervenus sur Excel.

On peut dupliquer le document terminé et dans le duplicata casser les liens pour transmettre un document libre de liens au client.

L'original pouvait resservir pour le rapport suivant...


Sinon il faut placer des signets dans Word si on peut placer depuis Excel en VBA.
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonsoir Grenoble87, bises Chris,

Le mieux serait de mettre un fichier Excel ainsi que les 2 fichiers Word, sans données confidentielles, de façon à te diriger vers l'une ou l'autre des propositions de Chris.

A+

Martial
 

Grenoble87

XLDnaute Nouveau
Re : Liaison Excel vers deux documents word

Bonjour,

Merci pour vos réponse, Pour ce qui est des signets word, comment le retrouver côté excel (Avec quel code) car dans word on donne un nom au signet ce qui représente un "lieu" dans le document word (Si j'ai bien compris bien sur). Le but et en fait d'envoyer par exemple un tableau dans le signet nommé "xx" ??
 

chris

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonjour

Exemple de code de notre ami MichelXLD alias SilkyRoad

Code:
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" : 
L'exemple ci-dessous permet d'exporter les valeurs des cellules A1 à A3 vers des signets d'un document Word nommé "monfichier.doc"
Les signets positionnés aux endroits de votre choix doivent être nommés "Signet1 , Signet2 et Signet3 


Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte

    Set WordApp = CreateObject("word.application")    'ouvre une session Word
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouvre le document Word
    WordApp.Visible = False    'Word est masqué pendant l'opération

    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 'Pour imprimer le doc obtenu

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

Yaloo

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonjour Grenoble, Chris,

Voici un exemple, il y a 2 macros.

A+

Martial

PS les 2 fichiers doivent être dans le même répertoire.
 

Pièces jointes

  • Grenoble.xlsm
    17.4 KB · Affichages: 64
  • Grenoble.docx
    12.5 KB · Affichages: 54

Grenoble87

XLDnaute Nouveau
Re : Liaison Excel vers deux documents word

Super!

Parfait ca marche bien pour les tableaux aussi; juste pour finir après je ne vous embete plus! :)Comment faire si je veux répeter la tache signet2,3,4,6,7.... Le fichier va devenir lourd? J,ai fait un bout de code pour rajouter un autre tableau mais il m'ouvre un autre word en le collant au bonne endroit mais moi je les veut sur le même fichier word... pas très clair mais je suis sure que vous m'avais compris

En tout cas merci beaucoup pour votre aide.
 

Grenoble87

XLDnaute Nouveau
Re : Liaison Excel vers deux documents word

Oui c'est sure que ca sera plus pratique,

Il y a donc trois fichier, deux words, un excel, il suffira juste de changer l'adresse du répertoire de fichier dans le module.

Mon but est donc de rajouter le deuxième tableau (Pour l'instant seul le tableau du haut se déplace) dans un signet2 sur chaque document word, pour info les tableau ne seront pas forcement côte à côte dans les deux rapports (rapport complétement différent en terme de sommaire, donc je ne peux pas faire comme si c'était un GROS tableau. Si "pas clair" re-demander moi.

Merci beaucoup
 

Pièces jointes

  • Doc1.xlsm
    19.1 KB · Affichages: 59
  • Doc1.docx
    17.1 KB · Affichages: 49
  • Doc2.docx
    15.8 KB · Affichages: 57
  • Doc1.docx
    17.1 KB · Affichages: 50
  • Doc2.docx
    15.8 KB · Affichages: 53
  • Doc1.xlsm
    19.1 KB · Affichages: 55
  • Doc1.docx
    17.1 KB · Affichages: 46
  • Doc2.docx
    15.8 KB · Affichages: 54

chris

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonjour

Tes signets ont l'air imbriqués dans le second doc.

A priori plutôt cela (pas testé)
Code:
Sub Signet()

Dim oWord As Object, oDoc As Object
    Set oWord = CreateObject("Word.Application")
    Set oDoc = oWord.Documents.Open("D:\Utilisateurs\S821976\Desktop\Nouveau dossier\Doc1.docx")
    oWord.Visible = True

    oDoc.Close True 'ferme le document word en sauvegardant les données
    Range("A1:G8").Copy
    oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
    oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
    Application.CutCopyMode = False
    Range("A13:D31").Copy
    oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
    oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
    Application.CutCopyMode = False
    
    oDoc.Close True 'ferme le document word en sauvegardant les données

    Set oDoc = oWord.Documents.Open("D:\Utilisateurs\S821976\Desktop\Nouveau dossier\Doc2.docx")
    Range("A1:G8").Copy
    oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
    oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
    Application.CutCopyMode = False
    Range("A13:D31").Copy
    oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
    oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
    Application.CutCopyMode = False
    oDoc.Close True 'ferme le document word en sauvegardant les données
    oWord.Quit 'ferme la session Word

 End Sub

Edit ajout signet 2.
On peut optimiser mais teste déjà cela
 
Dernière édition:

Grenoble87

XLDnaute Nouveau
Re : Liaison Excel vers deux documents word

Tes lignes de codes fonctionnent parfaitement par contre je rencontre un gros problème de mise en page au moment du collage dans les documents word, tout se décale... Ce que je n'ai pas précisé c'est que les rapports font 80 pages chacun.. Donc un nombre énorme de signet dans word et un mise en page apocalyptique...
Ma question est la suivante : existent t'il un autre moyen de remplir mes deux rapport en meme temps??( peut être sans passer par excel)
 

chris

XLDnaute Barbatruc
Re : Liaison Excel vers deux documents word

Bonjour

J'en reviens à ma première proposition : un collage spécial avec liaison.

J'ai le cas de 2 documents (Powerpoint mais c'est le même principe) avec pas mal de tableaux et graphiques : les collages ont été fait dans chacune des maquettes, mis à la bonne échelle, bien calés au bon endroit...

Chaque trimestre quand on les ouvre, on accepte la mise à jour, on adapte le texte qui commente (on pourrait avec un texte lié dans Word) et tout est nickel.

Pour l'envoi au client on fait une copie dont on casse les lien et le tour est joué.
 

Grenoble87

XLDnaute Nouveau
Re : Liaison Excel vers deux documents word

Bonjour,

Oui je crois que cela reste le plus simple.. Moi quii voulez réaliser un beau programme.. me voila deçu! :)
Merci pour toutes vos réponses en tout cas, je suis nouveau sur ce forum mais je compte bien y revenir très régulierement!
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 677
Messages
2 090 821
Membres
104 677
dernier inscrit
soufiane12