Supprimer les styles inutilisés

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


    Other languages:

    Description

    Le programme présenté ici a pour objet de montrer comment supprimer les styles personnalisés inutilisés dans un document.

    Le programme commence par accéder aux familles de style. Selon le type de document ces dernières peuvent être CharacterStyles, ParagraphStyles, FrameStyles, PageStyles, NumberingStyles, CellStyles, ShapeStyles.[1]

    L'exemple recherche ici dans les styles de cellules d'un classeur. On parcourt donc la collection CellStyles. Pour chaque élément, on utilise les méthodes isUserDefined et isInUse afin de tester s'il s'agit d'un style personnalisé utilisé ou non.[2]

    Seule particularité : on parcourt la collection "à l'envers" de n vers zéro pour éviter les problèmes (puisqu'on supprime des éléments de la collection parcourue).

    Code

    En LibreOffice Basic:

    Option Explicit
    
    Sub delete_unused_styles ()
        
        Dim oStylesF    As Object
        Dim oStyles     As Object
        Dim oStyle      As Object
        Dim i           As Integer
        
        oStylesF = ThisComponent.getStyleFamilies
    
        If oStylesF.hasByName("CellStyles") Then
            oStyles = oStylesF.getByName("CellStyles")
            
            For i = UBound(oStyles.ElementNames) To 0 Step -1
                oStyle = oStyles.getByName(oStyles.ElementNames(i))
                
                If oStyle.isUserDefined And Not(oStyle.isInUse) Then
                    oStyle = Nothing
                    oStyles.removeByName(oStyles.ElementNames(i))
                End If
            Next i
            
            MsgBox "Fini!"
        Else
            MsgBox "Famille de style non trouvée..."
        End If
        
    End Sub ' delete_unused_styles

    Notes

    1. Voir la documentation de l'API pour le service StyleFamilies
    2. Voir la documentation de l'API pour l'interface XStyle