fbpx
Cliquez ici pour découvrir tout ce que vous devez savoir
pour créer rapidement des sommaires avec Word

Tutoriel réalisé avec Word 2019

Je vous propose aujourd’hui un article invité de Cyril Seguenot du blog Bureautique Efficace. Cyril a travaillé pendant une quinzaine d’années dans l’édition de logiciels, en tant que développeur, puis chef de projet. Il est aujourd’hui formateur indépendant et auteur du blog Bureautique Efficace. Il aime beaucoup écrire, apprendre et transmettre ses connaissances et en a fait sa mission de vie.

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… :

Table des matières automatique sur Word

…ce qui a pour effet d’ouvrir la boîte de dialogue suivante :

Mise à jour d'une table des matières sur Word

Sélectionner alors l’option Mettre à jour toute la table et cliquez sur OK.

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.

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. »

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.

Voici la procédure à suivre :

  1. Créez ou ouvrez un document dans Word.
  2. Ouvrez l’éditeur VBA (vous devez pour cela afficher le ruban développeur et cliquer sur Visual Basic).
  3. Dans l’explorateur de projet, double-cliquez sur le nœud ThisDocument du projet Normal(attention à ne pas vous tromper de projet !) :
    ThisDocument Word VBA
  4. Saisissez le code suivant dans l’éditeur :

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

  1. Enregistrez le code, puis fermez et rouvrez Word pour qu’il soit pris en compte.

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 :

Macro Word pour table des matières

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

Cliquez ici pour découvrir tout ce que vous devez savoir
pour créer rapidement des sommaires avec Word
leo luctus Praesent porta. fringilla eleifend