Si vous utilisez les tables des matières dans vos documents, vous savez qu'elles ont un inconvénient : elles ne se mettent pas à jour toutes seules. Ainsi, dès que vous modifiez ou ajoutez de nouveaux titres dans votre document, vous devez penser à mettre à jour la table des matières. Nous allons donc voir, dans ce tutoriel, comment mettre à jour automatiquement vos tables des matières Word.
Mise à jour manuelle d'une table des matières
SI vous ne savez pas comment créer une table des matières dans Word, regardez tout d'abord cet article. Ensuite, la mise à jour de la table n'est pas très compliquée, car elle se fait en trois clics.
Cliquez sur le bouton Mettre à jour la table... :
...ce qui a pour effet d'ouvrir la boîte de dialogue suivante :
Bien que la mise à jour soit simple, encore faut-il penser à la faire, ce qui n'est pas évident lorsqu'il s'agit d'un gros document.Sélectionner alors l'option Mettre à jour toute la table et cliquez sur OK.
Il suffit par exemple d'ajouter quelques lignes au milieu du document pour que les titres suivants se retrouvent décalés d'une page. Si vous n'avez pas la table des matières sous les yeux, vous ne penserez peut-être pas à mettre à jour ses numéros de pages.
Le volet de navigation
Pour résoudre le problème de la mise à jour, il existe une première solution radicale : ne pas utiliser de tables des matières !
Cela peut paraître simpliste, mais si votre document n'est pas destiné à être imprimé sur papier, vous aurez avantage à utiliser le volet de navigation plutôt qu'une table des matières. Si les différences entre les deux ne sont pas très claires pour vous, je vous invite à jeter un œil sur mon article Table des matières et volet de navigation dans Word.
Remarque : si vous convertissez votre document Word en PDF, sachez qu'il est également possible de générer des signets à partir des titres, pour permettre la navigation dans le document via le volet des signets. Si vous voulez savoir comment faire, lisez mon article sur comment convertir un fichier Word en PDF.
Mise à jour automatique d'une table des matières
Cependant, si vous avez réellement besoin d'une table des matières, nous allons voir une solution élégante pour la mettre à jour automatiquement à l'enregistrement du document.
Vous l'avez peut-être deviné, cette solution passe par l'utilisation d'une macro. Et là, je vous vois faire la grimace en pensant : " Je n'ai pas du tout envie d'enregistrer mes documents au format docm, et encore moins d'ajouter moi-même cette macro dans chacun de mes documents. "
- Créez ou ouvrez un document dans Word.
- Ouvrez l'éditeur VBA (vous devez pour cela afficher le ruban développeur et cliquer sur Visual Basic).
- Dans l'explorateur de projet, double-cliquez sur le nœud ThisDocument du projet Normal(attention à ne pas vous tromper de projet !) :
- Saisissez le code suivant dans l'éditeur :
Mais rassurez-vous, la solution que nous allons voir est bien plus pratique : il s'agit d' ajouter la macro dans le modèle de documents Normal de Word, afin qu'elle soit disponible dans tous les documents.
- Enregistrez le code, puis fermez et rouvrez Word pour qu'il soit pris en compte.
Voici la procédure à suivre :
Public WithEvents App As Word.Application
'À l'ouverture d'un document
Private Sub Document_Open()
'Relie l'objet App à l'objet Application de Word
Set App = Word.Application
End Sub
'Avant enregistrement d'un document
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
'On met à jour les tables des matières
For t = 1 To ActiveDocument.TablesOfContents.Count
ActiveDocument.TablesOfContents(t).Update
Next
End Sub
Vous pouvez désormais faire un test sur un document comportant une table des matières : ajoutez ou modifiez un titre, puis enregistrez le document. Vous constatez que la table des matières se met à jour automatiquement !
Explication du code
Le code ci-dessus se base sur la technique exposée dans cette page de documentation Microsoft.
Document_Open est un gestionnaire d'évènement qui s'exécute automatiquement à l'ouverture d'un document.
On souhaite mettre à jour la table des matières à chaque fois que le document est enregistré. Mais, par défaut, on n'a pas accès au gestionnaire Document_BeforeSave, dans lequel on pourrait placer notre code. C'est pourquoi il faut auparavant déclarer une variable App de type Word.Application avec WithEvents. Puis la relier à l'objet application à l'ouverture du document.
Une fois la variable déclarée, on a en effet accès à l'ensemble des évènements qui peuvent survenir sur un document, comme le montre la capture ci-dessous :
Il suffit alors de sélectionner DocumentBeforeSave dans la liste pour générer le code du gestionnaire d'évènement.
Reste enfin à compléter ce code par la mise à jour de la table des matières, ce qui ne présente pas de difficulté particulière. À noter tout de même qu'il peut y avoir plusieurs tables des matières dans un document, c'est pourquoi il nous faut utiliser une boucle for pour les parcourir.
Vous pouvez bien entendu en profiter pour ajouter d'autre traitements à l'enregistrement du document si nécessaire.
Téléchargez " Comment mettre à jour automatiquement vos tables des matières Word ? " au format PDF