Jump to content

Mise à jour automatique des index

From The Document Foundation Wiki
This page is a translated version of the page Macros/Writer/006 and the translation is 80% complete.
Outdated translations are marked like this.


Description

Les modifications apportées dans un document ne sont pas automatiquement répercutées dans les index, en particulier la table des matières. Il peut arriver que les documents soient transmis avec des liens incorrects.

Cette macro met à jour automatiquement les index. Il est possible d'associer le lancement de cette macro à l'événement Enregistrer le document via (Outils ▸ Personnaliser ▸ Événements ▸ Enregistrer le document) afin que la mise à jour soit automatique lorsque le document est enregistré.

Par exemple pour la table des matières, imaginez que vous avez créé un document avec différents en-têtes (qui sont assignés par clic droit et Paragraphe ▸ Titre 1, etc). Et maintenant vous insérez une TDM par Insérer ▸ Table des matières et Index ▸ Table des matières, Index ou Bibliographie.... Ensuite, si vous ajoutez d'autres en-têtes, vous pouvez mettre à jour la TDM en exécutant simplement cette macro.


Code

Option Explicit

Sub UpdateIndexes
    '''Mettre à jour les index, par exemple pour la table des matières'''

    Dim i As Integer

    With ThisComponent <span lang="en" dir="ltr" class="mw-content-ltr">' Only process Writer documents</span>
        If .supportsService("com.sun.star.text.GenericTextDocument") Then
            For i = 0 To .getDocumentIndexes().count - 1
                .getDocumentIndexes().getByIndex(i).update()     
            Next i
        End If
    End With ' ThisComponent

End Sub ' UpdateIndexes
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import uno

def MettreAJourLesIndex():
    """Mettre à jour les index, par exemple pour la table des matières"""

    thisComponent = XSCRIPTCONTEXT.getDocument()
    if thisComponent.supportsService("com.sun.star.text.GenericTextDocument"):
        count = thisComponent.getDocumentIndexes().getCount()
        for i in range(0,count):
            thisComponent.getDocumentIndexes().getByIndex(i).update()