Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Excel, Base de données pour compléter des documents Word

anso2019

XLDnaute Nouveau
Bonjour à tous,
Nouvelle sur le forum, voici mon problème :
Je dois remplir des documents word avec toujours les mêmes données (Num de dossier, Adresse, Numéro du site, Intitulé du projet, ...)
Ce que je souhaite : créer un document excel avec mes données que je dois répéter dans tous les documents word.
Dans les documents Word, ''rappeller'' les informations (via des champs?) qui sont reprises dans l'excel.
En résumé, un excel avec mes données, commun à tous mes documents Word.
D'avance, un très grand merci pour votre aide
 

job75

XLDnaute Barbatruc
Bonjour anso2019, bienvenue sur XLD,

1) Dans le fichier Excel nommez les cellules contenant les données que vous voulez transférer, par exemple Texte et Date

2) Dans les documents Word créez les signets correspondants en leur donnant ces mêmes noms.

3) Ouvrez tous les documents Word et dans le fichier Excel exécutez cette macro :
VB:
Sub AlimenterWord()
Dim WApp As Object, doc As Object, nom As Name
On Error Resume Next 'si des noms ne correspondent pas à des signets
Set WApp = GetObject(, "Word.Application")
For Each doc In WApp.documents
    For Each nom In ThisWorkbook.Names
        doc.bookmarks(nom.Name).Range = Evaluate(nom.Name)
Next nom, doc
End Sub
A+
 

Modeste geedee

XLDnaute Barbatruc
Bonsour® Pourquoi ne pas tout faire avec WORD ???
Word sait gérer les modèles, les tableaux, les calculs simples, le publipostage, les macros ...
http://www.faqword.com/index.php
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Avec la macro de mon post #2 les signets sont supprimés une fois remplis, il faut donc les rétablir :
VB:
Sub AlimenterWord()
Dim WApp As Object, doc As Object, nom As Name, bm As Object, pos&, txt$
On Error Resume Next 'si des noms ne correspondent pas à des signets
Set WApp = GetObject(, "Word.Application")
For Each doc In WApp.documents
    For Each nom In ThisWorkbook.Names
        Set bm = Nothing
        Set bm = doc.Bookmarks(nom.Name)
        If Not bm Is Nothing Then
            pos = bm.Range.Start
            txt = ""
            txt = Evaluate(nom.Name).Text
            bm.Range.Text = txt
            doc.Bookmarks.Add Name:=nom.Name, Range:=doc.Range(pos, pos + Len(txt)) 'rétablit le signet
        End If
Next nom, doc
End Sub
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…