Mise à jour des champs sous WORD

Fermé
Guitou2804 - 8 mai 2010 à 13:55
m@rina Messages postés 20027 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 18 avril 2024 - 9 mai 2010 à 23:45
Bonjour à tous,

Je suis actuellement en train de créer sous word des procédures qui peuvent être révisés par n'importe qui une fois qu'elles seront émises.

Pour vérifier l'état du document après chaque révision, j'ai inséré dans l'en tête un champ RevNum et un champ SaveDate. De plus dans le corps du texte j'ai aussi inséré un champ LastSaveBy.

Seulement je voudrais que ces champs se mettent automatiquement à jour lorsque le document est enregistré.

Le top du top serait même que ces champs se mettent à jour lorsque le document est enregistré en format PDF puisque c'est le format obligatoire de publication de la procédure...

J'ai trouvé sur ce site un code qui permet de mettre à jour les champs dans l'en tête mais pas mon champ LastSaveBy.... Et étant complètement nul en VBA.... j'aurais aimé obtenir de l'aide. Merci à vous.

A voir également:

9 réponses

m@rina Messages postés 20027 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 18 avril 2024 11 269
8 mai 2010 à 23:28
Bonjour,

J'ai pas l'intégralité de vos échanges, mais... un pdf n'est qu'une impression.
Or, par défaut, les champs se mettent à jours lors de l'impression (à régler éventuellement dans les options si cela a été modifié).

m@rina
2
sriviere Messages postés 853 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 mai 2013 410
8 mai 2010 à 20:20
Si ton utilisateur sauvegarde en .pdf dès qu'il a terminé de remplir le doc, le pdf s'occupe aussi de mettre à jour les champs puisque la sauvegarde qu'il effectue prend cela en charge.
Si ton utilisateur ne passe pas par là, il te faudrait une petite macro qui remplit cette fonction.
A+, j'y retourne.
1
sriviere Messages postés 853 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 mai 2013 410
8 mai 2010 à 15:50
Bonjour,

Voici un code VBA issu du site de Marina (https://faqword.com/index.php/wfaq/champs/703-quelle-est-la-difference-entre-un-champ-ask-et-un-champ-fillin-.html pour la mise à jour des champs.
Tu vas voir, c'est simple à enregistrer et comme tu as l'air d'être débrouillard et imaginatif, ça ne devrait pas te faire peur (si je peux me permettre) et par ailleurs, la VBA, c'est tout à fait jubilatoire !

Tu vas aller dans les macros, tu vas cliquer sur "Nouvelle macro", "Enregistrer une nouvelle macro" (tu essaies de te souvenir du numéro de la nouvelle macro), et tu cliques sur OK. Tu vas avoir un petit enregistreur qui va s'installer sur ton écran avec deux boutons, tu cliques tout de suite sur "Arrêter l'enregistrement".
A partir de là, tu vas avoir la place de mettre la macro ci-dessous.

Sub mise_a_jour()
For Each champ In ActiveDocument.Range.Fields
champ.Update
Next champ
End Sub

Ensuite, tu vas entrer dans "Macros", tu vas descendre jusqu'au numéro de la macro que tu viens de créer et tu vas copier les lignes de la macro ci-dessus que tu vas coller en lieu et place de ton Sub Macro n° xxx jusqu'à et y compris End Sub.
Ensuite, tu retournes dans ton fichier puis tu retournes dans Macros, tu vas chercher la macro nommée Mise_à_jour et tu vas cliquer sur Exécuter.
Ta macro va s'exécuter et tes champs vont se mettre à jour.

Si cela t'intéresse, je peux te dire comment faire un raccourci clavier pour exécuter ta macro, si tu me dis sur quelle version de Word tu es car c'est différent d'une version à l'autre.
0
Alors, j'ai Word 2007, j'ai rentré le code que tu m'as fourni mais il me met "membre de méthode ou de données introuvable"....

Et en fait d'après ce que je comprends il faudrait exécuter la macro mais je voudrais que cela se fasse "à l'insu" de l'utililisateur....
Le code que j'avais trouvé et qui marchait à moitié est le suivant :

Sub FileSave()
Dim x As Single
'sauvegarde puis mets à jour les champs
ActiveDocument.Save
For x = 1 To 3
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Fields(x).Update
Next
End Sub

Je n'ai aucune idée de ce qu'il veut dire.... Tout ce que je sais c'est que la personne à qui on a répondu ce code avait à peu pres le même souhait que moi alors je l'ai utilisé, mais le problème c'est que la MàJ ne se faisait pas pour le LastSavedBy qui est dans le corps du document, alors que celle de RevNum et de SaveDate situés dans l'en tete, se faisait...

Enfin en tout cas merci pour cette première réponse, la je viens de me battre 3h avec Excel pour arriver à avoir un numéro de semaine en fonction de la date, et la date d'un jour de la semaine en fonction du numéro de la semaine.... Enfin bref... Galère quoi, sans compter ces mises en formes conditionnelles qui me rendent dingue.... :s

Merci beaucoup.

Guillaume.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sriviere Messages postés 853 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 mai 2013 410
Modifié par sriviere le 8/05/2010 à 20:06
Hello,

Je te réponds vite, parce que je viens de lire ta réponse, mais je suis en plein boulot et je me prends deux minutes pour respirer... dans ce que je vois et ce que je comprends, mais je débute en macros, c'est que dans le code que tu as collé, la mise à jour ne se fait que sur 3 champs et non la totalité. C'est pour ça que tu n'as pas la mise à jour de LastSaveBy, s'il vient en 4ème position
For x = 1 To 3 qui est renvoyé à Range.Fields(x) et par ailleurs, ne se fait que dans le wdHeaderFooterPrimary (ou entête, pied de page) et non dans le corps du texte. Tu pourrais avantageusement coller la macro de Marina à la place.

Ceci dit, avant de te donner le code de Marina, je me disais qu'il suffisait de "mettre à jour les champs", tout simplement par un clic droit de la souris ou par F9. Une macro, c'est peut-être superfétatoire, en l'occurrence, mais j'ai vu très très vite qu'il y avait des champs qui nécessitaient une mise à jour autre.
Je n'ai pas approfondi parce que je carbure, maintenant, mais, je vais m'y replonger dès que j'ai 5 minutes.
Cependant, essaie F9 ou clic droit souris, c'est, en fait, le principe de la mise à jour "ordinaire" dirions-nous.

Si tu as des problèmes de mises en forme conditionnelles, pose ta question, il y a des balèzes d'Excel ici, ils t'aideront.

A+
0
Non c'est bon j'ai terminé pour excel, et j'ai réussi à faire ce que je voulais ! :D

Pour mon problème effectivement un F9 marche très bien, mais comme je te l'ai dit, je voudrais que cela se fasse automatiquement, vu que le document peut être révisable par n'importe qui, qui ne pensera pas forcément à faire un F9, le code que j'avais trouvé dans un premier temps était génial pour ça, en cliquant sur enregistrer cela mettait les champs à jour sans problème... Effectivement je m'étais dis que cette variable X pouvait avoir un rapport avec le nombre de champs... J'avais donc essayé en mettant un autre chiffre que 3, mais je crois que cela me mettait un message d'erreur, et ne comprenant pas du tout ce langage j'ai abandonné rapidement cette idée...

Mais que je sache sur la première page j'ai un champ RevNum, puis Page, NumPages, et enfin SaveDate dans l'en tete, un champ FileName, puis Page et NumPages dans le pied de page ; et enfin sur ma première page dans un tableau un champ CreateDate et un autre LastSaveBy. Après à part une table des matières je n'ai rien d'autre dans le document...

Merci d'accorder un peu de temps en tout cas, moi aussi je bosse, je finis mes procédures.... Vive les démarches qualité... :-(

Guillaume.
0
Effectivement la réponse à mes problèmes vient d'être apportée ! Enregistrer en PDF permet de mettre à jour les champs ! C'est magique !

Par contre maintenant j'ai une autre question, comment puis je remettre à zéro le champ RevNum? Parce que ma version actuelle est la version A mais vu le nombre d'enregistrement que j'ai fait pour tester la fonction, j'en suis à la version U....
0
sriviere Messages postés 853 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 2 mai 2013 410
9 mai 2010 à 21:27
Hello,

Je n'ai jamais utilisé ce champ, mais je me demandais pourquoi ne mettrais-tu pas un numéro plutôt qu'une lettre à ta version ?

A+
0
m@rina Messages postés 20027 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 18 avril 2024 11 269
9 mai 2010 à 23:45
Bonsoir,

Le champ REVNUM est un champ Propriétés Stastistiques d'un document, et bien entendu non modifiable puisqu'il représente le nombre de fois qu'un document a été enregistré.

La seule solution est d'enregistrer le fichier sous pour redémarrer à 1.

Circé
https://faqword.com/
0