Fusion

Signaler
Messages postés
7
Date d'inscription
lundi 26 juillet 2010
Statut
Membre
Dernière intervention
17 novembre 2010
-
Messages postés
7
Date d'inscription
lundi 26 juillet 2010
Statut
Membre
Dernière intervention
17 novembre 2010
-
Bonjour,

Je termine un petit programme en VB 2008 express qui se sert d'Excel comme base de données et de Word afin d'éditer des lettres.

Chaque destinataire fait l'objet d'un fichier Excel (le nom du fichier excel est le nom de la personne) et comprend entre autres le nom, prénom, adresse, âge.....

Ma lettre en Word contient à plusieurs endroits des champs crées par mes soins comme par exemple : {MERGEFIELD Nom \*FirstCap\MERGEFORMAT}.

Ma question est la suivante : peut-on grâce, à un code, prendre la valeur (un nom) d'une cellule Excel afin qu'elle soit mise dans le champs décrit ci-dessus, et si oui, quel est-il ?

Merci beaucoup et bonne journée à tous !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

3 réponses


Bonjour,

Je te propose un exemple qui effectue le travail par remplacement. Il existe surement un moyen de rechercher des champs.
Le but étant de trouver une chaine de caractère dans un document word (dans mon exemple @nom@ et de la remplacer par le contenu d'une cellule excel.
Bien sur certaines lignes sont à changer comme l'emplacement des fichiers à lire (word et excel) ainsi que la cellule (A1 dans mon exemple) ou VB ira lire sa valeur, le numéro de la feuille etc...
Ne pas oublier d'ajouter les références COM de microsoft excel et microsoft word au projet (projet/ajouter une référence|COM)

'créations des objets excel et word
Dim exc As Excel.Application = CreateObject("Excel.Application")
Dim wrd As Word.Application = CreateObject("Word.Application")

'ouverture du workbook (bien sur, il faut modifier cette ligne)
Dim WorkBook As Excel.Workbook = exc.Workbooks.Open(My.Application.Info.DirectoryPath & "\Classeur1.xls")

'selection de Feuille1 (on peut en prendre une autre)
Dim Feuille As Excel.Worksheet = WorkBook.Worksheets(1)

'lecture du contenu de la cellule A1
Dim ContenuCellule As String = Feuille.Range("A1", "A1").FormulaLocal

'ouverture du document word (bien sur il faut modifier cette ligne)
Dim WordDoc As Word.Document = wrd.Documents.Open(My.Application.Info.DirectoryPath & "\Doc1.doc")

'remplacement de texte
WordDoc.Content.Find.Execute(FindText:="@nom@", ReplaceWith:=ContenuCellule)

'fermeture du classeur
WorkBook.Close()

'sauvegarde du nouveau document fusionné
WordDoc.SaveAs(My.Application.Info.DirectoryPath & "\Fusion.doc")

'fermeture du document word
WordDoc.Close()

'fermeture de l'application excel
exc.Quit()

'fermeture de l'application word
wrd.Quit()


Bon courage.

oups une fois de plus je viens de me faire avoir. Je viens de voir que c'est pour du vb6.
Et comme on ne peut pas supprimer le post (je m'excuse lol)
Messages postés
7
Date d'inscription
lundi 26 juillet 2010
Statut
Membre
Dernière intervention
17 novembre 2010

Pas de problème, merci tout de même :)