Fusion

JMMORIO Messages postés 7 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 17 novembre 2010 - 30 sept. 2010 à 11:04
JMMORIO Messages postés 7 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 17 novembre 2010 - 30 sept. 2010 à 15:04
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

Utilisateur anonyme
30 sept. 2010 à 14:25
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.
0
Utilisateur anonyme
30 sept. 2010 à 14:27
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)
0
JMMORIO Messages postés 7 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 17 novembre 2010
30 sept. 2010 à 15:04
Pas de problème, merci tout de même :)
0
Rejoignez-nous