mise à jour des champs

Le
PAN GOT
Bonsoir à tous,
j'ai des gros fichiers .doc avec de nombreux renvois vers des signets ou des
éléments numérotés.
Je voulais faire une macro qui met à jour tous ces champs (malgrès l'option
cochée de mise à jour avant impression).
J'ai donc récupéré dans l'aide quelques lignes que j'ai complété mais j'ai
encore quelques soucis.
1- la macro se termine au premier saut de section (page de garde différente
des autres)
2-si je place le curseur sur la deuxième page, la macro tourne en boucle sur
le sommaire qui se trouve quelque pages suivantes.
3-après, elle a très longue pour se terminer si je me place après ce
sommaire et je ne sais pas si il y a moyen de l'optimiser.

Voici ces quelques lignes si quelqu'un avait la bonté de m'indiquer, soit la
façon de contourner les 2 premiers problèmes, soit de définir la position du
curseur comme départ de la sélection, soit de saisir la page de départ avec
un Msgbox.
D'avance, merci.

Sub MaJ_Champs()



Dim MyRange, aWord, MonFichier



Set MonFichier = ActiveDocument.Range(Start:=0, End:=Selection.End)



For Each aWord In MonFichier.Words

With Selection

Set MyRange = .GoToNext(What:=wdGoToField)

.MoveRight Unit:=wdWord, Extend:=wdExtend

.Fields(1).Select

'mise à jour des champs

.Fields.Update

End With

Next aWord



MsgBox ("Macro terminée")

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21479701
Bonjour,

As-tu essayé quelque chose comme ceci :

'--------------------------------------------
Sub test()
Dim Pan As Pane, Pag As Page
Dim Br As Break, F As Field

For Each Pan In ActiveDocument.ActiveWindow.Panes
For Each Pag In Pan.Pages
For Each Br In Pag.Breaks
For Each F In Br.Range.Fields
'Ton code que tu veux exécuter
'sur chacun des champ. Tu es dans
'une boucle où F représente un champ.
F.Update
Next
Next
Next
Next

End Sub
'--------------------------------------------



"PAN GOT" : un$
Bonsoir à tous,
j'ai des gros fichiers .doc avec de nombreux renvois vers des signets ou des
éléments numérotés.
Je voulais faire une macro qui met à jour tous ces champs (malgrès l'option
cochée de mise à jour avant impression).
J'ai donc récupéré dans l'aide quelques lignes que j'ai complété mais j'ai
encore quelques soucis.
1- la macro se termine au premier saut de section (page de garde différente
des autres)
2-si je place le curseur sur la deuxième page, la macro tourne en boucle sur
le sommaire qui se trouve quelque pages suivantes.
3-après, elle a très longue pour se terminer si je me place après ce
sommaire et je ne sais pas si il y a moyen de l'optimiser.

Voici ces quelques lignes si quelqu'un avait la bonté de m'indiquer, soit la
façon de contourner les 2 premiers problèmes, soit de définir la position du
curseur comme départ de la sélection, soit de saisir la page de départ avec
un Msgbox.
D'avance, merci.

Sub MaJ_Champs()



Dim MyRange, aWord, MonFichier



Set MonFichier = ActiveDocument.Range(Start:=0, End:=Selection.End)



For Each aWord In MonFichier.Words

With Selection

Set MyRange = .GoToNext(What:=wdGoToField)

.MoveRight Unit:=wdWord, Extend:=wdExtend

.Fields(1).Select

'mise à jour des champs

.Fields.Update

End With

Next aWord



MsgBox ("Macro terminée")

End Sub
Geo
Le #21479771
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]



[...]
Voici ces quelques lignes si quelqu'un avait la bonté de m'indiquer, soit la façon de
contourner les 2 premiers problèmes, soit de définir la position du curseur comme
départ de la sélection, soit de saisir la page de départ avec un Msgbox.



Pour saisir des données, utiliser InputBox, il y a un exemple dans
l'aide.
Pour mettre à jour tous les champs, l'enregistreur de macros est votre
ami.
La manipulation : Tout sélectionner, mettre tout à jour (F9)

Donne
Selection.WholeStory
Selection.Fields.Update

--
A+
PAN GOT
Le #21521262
Bonsoir Geo
Désolé pour le retard dans ma reponse, j'ai eu un contre temps.
J'ai utilisé tes deux lignes de codes. C'est effectivement trés court comme
code et trés rapide en exe.
Par contre, sur le sommaire, j'ai constaté que les références des pages
étaient mises à jour mais pas les libéllés des chapitres.
J'ai trouvé la fonction 'Selection.Information' qui va, je pense, bien
m'aider pour localiser se sommaire et le mettre à jour.
Merci. @+

"Geo"
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]



[...]
Voici ces quelques lignes si quelqu'un avait la bonté de m'indiquer, soit
la façon de contourner les 2 premiers problèmes, soit de définir la
position du curseur comme départ de la sélection, soit de saisir la page
de départ avec un Msgbox.



Pour saisir des données, utiliser InputBox, il y a un exemple dans l'aide.
Pour mettre à jour tous les champs, l'enregistreur de macros est votre
ami.
La manipulation : Tout sélectionner, mettre tout à jour (F9)

Donne
Selection.WholeStory
Selection.Fields.Update

--
A+


Geo
Le #21521522
Bonjour

Par contre, sur le sommaire, j'ai constaté que les références des pages étaient mises à
jour mais pas les libéllés des chapitres.



Essayez
ActiveDocument.TablesOfContents(1).Update
éventuellment suivi de
ActiveDocument.TablesOfContents(1).UpdatePageNumbers

--
A+
PAN GOT
Le #21590391
Bonjour,
encore toutes mes excuses pour cette reponse tardive.
çà marche sans mettre d'ailleurs la seconde ligne.
Encore merci.
Patrick

"Geo"
Bonjour

Par contre, sur le sommaire, j'ai constaté que les références des pages
étaient mises à jour mais pas les libéllés des chapitres.



Essayez
ActiveDocument.TablesOfContents(1).Update
éventuellment suivi de
ActiveDocument.TablesOfContents(1).UpdatePageNumbers

--
A+


Geo
Le #21592141
Bonjour Patrick

encore toutes mes excuses pour cette reponse tardive.
çà marche sans mettre d'ailleurs la seconde ligne.



C'est ça qui est important.
Merci pour le retour

--
A+
Publicité
Poster une réponse
Anonyme