Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à jour table des matières par macro

25 réponses
Avatar
Anmapie
Bonjour =E0 tous,

J'ai un document Word 2000 qui contient des sections,=20
certaines sont verrouill=E9es et d'autres ne le sont pas=20
comme celle qui contient la table des mati=E8res.
J'ai cr=E9er un signet nomm=E9 "Table_des_mati=E8res" au d=E9but=20
de la table des mati=E8res.
J'ai enregistr=E9 une macro qui atteint le signet, qui met=20
ensuite la table des mati=E8res =E0 jour.

Mon probl=E8me: Lorsque je fais des ajouts sans faire aucune=20
suppression, la table des mati=E8res ne se met pas =E0 jour. =20
Par contre si je supprime des =E9l=E9ments qui figuraient dans=20
la table elle se met =E0 jour.

Que faut-il que j'ajoute =E0 ma macro pour qu'elle puisse=20
mettre =E0 jour la table des mati=E8res lorsque j'ajoute=20
seulement des =E9l=E9ments?

Voici ma macro:
Selection.GoTo What:=3DwdGoToBookmark,=20
Name:=3D"Table_des_mati=E8res"
Selection.Find.ClearFormatting
With Selection.Find
.Text =3D ""
.Replacement.Text =3D ""
.Forward =3D True
.Wrap =3D wdFindContinue
.Format =3D False
.MatchCase =3D False
.MatchWholeWord =3D False
.MatchWildcards =3D False
.MatchSoundsLike =3D False
.MatchAllWordForms =3D False
End With
Selection.Fields.Update

Merci beaucoup

10 réponses

1 2 3
Avatar
Geo
Bonjour Anmapie


Bonjour Geo,

J'ai le dernier code que tu m'as suggéré mais
malheureusement, la table des matières ne se met toujours
pas à jour si j'ajoute seulement des éléments. Vraiment
je ne sais plus quel alternative utiliser.


et si tu fais la mise à jour à la main (F9) de ta table, c'est bon ?

--

A+

Avatar
anmapie
bonjour Geo

Non je ne peux pas faire la mise à jour à la main car le
document est protégé, même si la section contenant la
table des matières est déverrouillée, il n'y a aucun moyen
de faire la mise à jour manuellement, c'est pourquoi
j'essai de contourner le problème par macro.

Merci beaucoup pour ton aide
-----Message d'origine-----
Bonjour Anmapie


Bonjour Geo,

J'ai le dernier code que tu m'as suggéré mais
malheureusement, la table des matières ne se met
toujours


pas à jour si j'ajoute seulement des éléments. Vraiment
je ne sais plus quel alternative utiliser.


et si tu fais la mise à jour à la main (F9) de ta table,
c'est bon ?


--

A+

.




Avatar
Geo
Bonjour anmapie


bonjour Geo

Non je ne peux pas faire la mise à jour à la main car le
document est protégé, même si la section contenant la
table des matières est déverrouillée,


Ouf tu me rassures, enfin quelque chose de logique.

il n'y a aucun moyen
de faire la mise à jour manuellement, c'est pourquoi
j'essai de contourner le problème par macro.


Ben non, c'est logique aussi :-D
En fait le problème est de trouver ce qui verrouille la table à ton
insu.
Un champ peut être verrouillé que la section soit protégée ou non.
mais ce qui serait bien c'est de mettre avant

debug.print Selection.Fields.Locked

avant le update, pour savoir

et si ton champ est verrouillé ajouter

tu pourrais ajouter Selection.Fields.Locked = False


--

A+

Avatar
Anacoluthe
Bonjour !

'anmapie' nous a écrit ...
Non je ne peux pas faire la mise à jour à la main car le
document est protégé, même si la section contenant la
table des matières est déverrouillée, il n'y a aucun moyen
de faire la mise à jour manuellement, c'est pourquoi
j'essai de contourner le problème par macro.


Oui, la macro doit déprotéger les sections, mettre à jour
la table, puis re-protéger les sections.....

Anacoluthe
« On se protège des autres au lieu de se protéger de soi-même. »
- Michel RANDOM

Avatar
Bonjour Geo,

J'ai fait les ajouts que tu m'as proposé, cela ne
fonctionne pas, peut-être que je n'ai pas placé le code au
bon endroit. Pourrais-tu m'indiquer correctement à quel
endroit dans le code je dois mettre cela.

Selection.GoTo What:=wdGoToBookmark,
Name:="Table_des_matières"
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Fields.Update

Merci
-----Message d'origine-----
Bonjour anmapie


bonjour Geo

Non je ne peux pas faire la mise à jour à la main car le
document est protégé, même si la section contenant la
table des matières est déverrouillée,


Ouf tu me rassures, enfin quelque chose de logique.

il n'y a aucun moyen
de faire la mise à jour manuellement, c'est pourquoi
j'essai de contourner le problème par macro.


Ben non, c'est logique aussi :-D
En fait le problème est de trouver ce qui verrouille la
table à ton

insu.
Un champ peut être verrouillé que la section soit
protégée ou non.

mais ce qui serait bien c'est de mettre avant

debug.print Selection.Fields.Locked

avant le update, pour savoir

et si ton champ est verrouillé ajouter

tu pourrais ajouter Selection.Fields.Locked = False


--

A+


.




Avatar
Geo
Bonjour

Pense bien à prendre en compte la remarque d'Anacoluthe : tu es
certain que ta section n'est aps protégée ?

Voici ce que je ferais :

Selection.GoTo What:=wdGoToBookmark, Name:="Table_des_matières"
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
msgbox "Verrouillage de la table " & Selection.Fields.Locked
Selection.Fields.Locked = False
Selection.Fields.Update

Le msgbox affichera une un message pour y lire l'état de protection de
ta table.
--

A+
Avatar
Bonjour Geo,

Ça ne fonctionne toujours pas.

Y aurait-il un moyen que je t'envoie mon fichier d'exemple.

Merci
-----Message d'origine-----
Bonjour

Pense bien à prendre en compte la remarque d'Anacoluthe :
tu es

certain que ta section n'est aps protégée ?

Voici ce que je ferais :

Selection.GoTo What:=wdGoToBookmark,
Name:="Table_des_matières"

Selection.MoveRight Unit:=wdWord, Count:=1,
Extend:=wdExtend

msgbox "Verrouillage de la table " &
Selection.Fields.Locked

Selection.Fields.Locked = False
Selection.Fields.Update

Le msgbox affichera une un message pour y lire l'état de
protection de

ta table.
--

A+


.



Avatar
Geo
Bonjour

Bonjour Geo,

Ça ne fonctionne toujours pas.

Y aurait-il un moyen que je t'envoie mon fichier d'exemple.


oui : tu me l'envoies à
geo point le point du arrobase laposte point net

Si c'est pas clair, j'expliquerai, mais s'il te plait ne mets pas mon
adresse en clair dans un message public.

--

A+

Avatar
anmapie
Bonjour Geo,

dans ton adresse toutes les fois où tu écris point veux
dire que je tape le .? si c'est ça, le message me reviens
toujours?
Anmapie
-----Message d'origine-----
Bonjour

Bonjour Geo,

Ça ne fonctionne toujours pas.

Y aurait-il un moyen que je t'envoie mon fichier
d'exemple.



oui : tu me l'envoies à
geo point le point du arrobase laposte point net

Si c'est pas clair, j'expliquerai, mais s'il te plait ne
mets pas mon

adresse en clair dans un message public.

--

A+

.




Avatar
Geo
Bonjour anmapie


Bonjour Geo,

dans ton adresse toutes les fois où tu écris point veux
dire que je tape le .? si c'est ça, le message me reviens
toujours?


et l'arrobase par @
et bien sûr aucun espace.


--

A+

1 2 3