Modifier le texte d'un signet word via Excel

cs_yamat Messages postés 2 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 14:43
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 1 août 2008 à 16:00
Bonjour à tous,


Normalement je trouve toujours mes réponses en cherchant sur internet
mais là je me suis inscrits et sollicite votre aide car je suis bloqué
depuis quelques jours.


Je dois réaliser un outil sous Excel pour mon entreprise: générer des
documents Word à partir des informations saisies dans Excel. Ex: nom
client, coordonnées, version du document, etc. Les employés saisissent
seulement les informations dans les cellules, puis cliquent sur un
bouton pour générer le document. La macro va chercher le document Word
modèle et les informations sont reportées directement vers des signets:

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
WordDoc.Bookmarks("date1").Range.Text = Sheets("Informaciones generales").Range("C12").Value

<!-- END TEMPLATE: bbcode_code -->Je ne peux pas faire du publipostage puisque les documents sont différents selon les clients.


Jusque ici tout va bien, sauf que les documents évoluent. Ainsi ma
macro va en permanence rechercher le dernier document Word créé. Sauf
que lors de l'actualisation (ex: numéro de version changée), je me
retrouve avec toutes les informations en double au niveau des signets.
C'est à dire que le texte n'est pas modifié mais ajouté à droite du
texte de l'ancienne version.


Après recherche il serait plus facile de passer par des champs:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
WordDoc.Fields("date1").Result.Text = "valeur a reporter"

<!-- END TEMPLATE: bbcode_code -->Sauf que je ne sais pas comment
définir ce fameux "Fields" dans Word. Je sais que c'est un champ,
ctrl+F9, mais je ne sais pas quoi mettre dedans.


J'ai également trouvé cette formule qui me renvoie des erreurs:

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
Dim objRange As Range
Set objRange = ActiveDocument.Bookmarks.Item("date1").Range
objRange.Text = Sheets("Informaciones generales").Range("C12").Value
ActiveDocument.Bookmarks("date1").Range.Select
Selection.Text = Sheets("Informaciones generales").Range("C12").Value
objRange.Bookmarks.Add"date1"

<!-- END TEMPLATE: bbcode_code -->J'espère que j'ai été clair et que vous pourrez m'aider.


Merci d'avance

3 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
31 juil. 2008 à 15:17
Bonjour,

Une question m'interpelle :
Je ne peux pas faire du publipostage puisque les documents sont différents selon les clients

Tes courriers sont des courriers type,  1 courrier ne peut etre destiné qu'un un seul et unique client?
Si un courrier peut etre désigné pour plusieurs clients, tu peux utiliser le publipostage, tu n'a qu'a selectionner les clients concerné?

S.L.B.

<hr />*********************************************************************************
<>
0
cs_yamat Messages postés 2 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 15:37
Bonjour lillith212,

J'y avais pensé mais je ne peux pas.

Car un employé va travailler sur le document, va avancer sur la partie rédaction du rapport, et va le sauvegarder. Le but est de ne pas ressaisir 1000 fois les informations du client sur chaque document (il y en a une dizaine a rédiger).

Donc le but est de créer un outil via Excel, avec sur chaque feuille les infos d'un document (dernière version, date de mise a jour,etc. ) et quand l'utilisateur a tout rempli il clique sur un bouton qui va rechercher le document en question et actualise les champs (ou signets) sans perdre la partie rédaction qu'il aura faite auparavant.

Je ne peux même pas utiliser le collage avec liaison, car d'une le deplacement des fichiers provoquent des problemes, et comme chaque version est sauvegardé, si l'on modifie une cellule du fichier Excel, alors toutes les anciennes versions se mettront a jour aussi, ce qui n'est pas le but.

Je ne sais pas si je suis clair mais c'est un peu complique comme sujet.

La question est comment faire pour modifier le texte d'un signet sans le detruire, ou sans avoir les données qui se suivent.

Ex: a la deuxieme version j'ai deux fois le nom du client au niveau du Signet "CLIENT"

Et surtout je ne sais pas ce que je dois mettre dans Word pour pouvoir utiliser ce code:

WordDoc.Fields(1).Result.Text = "valeur a reporter"

[auteur/LILLITH212/1208539.aspx ]
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
1 août 2008 à 16:00
Private Sub MajSignet(nom_signet, valeur)
ActiveDocument.Bookmarks(nom_signet).Select
Selection.Text = valeur
ActiveDocument.Bookmarks.Add    Name:=nom_signet, Range:=Selection.Range
End Sub


 
0
Rejoignez-nous