Aide LibreOfficeDev 25.8
En utilisant les langages de programmation Basic ou Python, il est possible d'écrire des macros qui appliquent des formats à des plages de cellules dans Calc.
L'extrait de code ci-dessous crée un Sub appelé FormatCellBorder qui applique de nouveaux formats de bordure à une adresse de plage donnée dans la feuille Calc actuelle.
    Sub FormatCellBorder(cellAddress as String, newStyle as Byte, newWidth as Long, Optional newColor as Long)
        ' Crée la structure UNO qui stockera le nouveau format de ligne
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = newStyle
        lineFormat.LineWidth = newWidth
        If Not IsMissing(newColor) Then lineFormat.Color = newColor
        ' Obtient la cellule cible
        Dim oCell as Object
        Set oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellAddress)
        ' Applique le nouveau format à toutes les bordures
        oCell.TopBorder = lineFormat
        oCell.RightBorder = lineFormat
        oCell.LeftBorder = lineFormat
        oCell.BottomBorder = lineFormat
    End Sub
  Le Sub décrit ci-dessus prend quatre arguments :
cellAddress est une chaîne désignant la plage à formater au format "A1".
newStyle est une valeur entière qui correspond au style de la ligne de bordure (voir Styles de ligne ci-dessous).
newWidth est une valeur entière qui définit l'épaisseur de la ligne.
newColor est une valeur entière correspondant à une couleur définie à l'aide de la fonction RGB.
Pour appeler FormatCellBorder, créez une nouvelle macro et transmettez les arguments souhaités, comme indiqué ci-dessous :
    Sub MyMacro
        ' Donne accès aux constantes de style de ligne
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Formats "B5" avec des bordures bleues unies
        FormatCellBorder("B5", cStyle.SOLID, 20, RGB(0, 0, 255))
        ' Formate toutes les bordures de la plage "D2:F6" avec des bordures en pointillés rouges
        FormatCellBorder("D2:F6", cStyle.DOTTED, 20, RGB(255, 0, 0))
    End Sub
  Il est possible d'implémenter la même fonctionnalité en Python :
    from uno import createUnoStruct
    from scriptforge import CreateScriptService
    
    def formatCellBorder(cellAddress, newStyle, newWidth, newColor=0):
        # Définit le nouveau format de ligne
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = newStyle
        line_format.LineWidth = newWidth
        line_format.Color = newColor
        # Service Scriptforge pour accéder aux plages de cellules
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange(cellAddress)
        cell.TopBorder = line_format
        cell.RightBorder = line_format
        cell.LeftBorder = line_format
        cell.BottomBorder = line_format
  L'extrait de code ci-dessous implémente une macro nommée myMacro qui appelle formatCellBorder :
    from com.sun.star.table import BorderLineStyle as cStyle
    
    def myMacro():
        bas = CreateScriptService("Basic")
        formatCellBorder("B5", cStyle.SOLID, 20, bas.RGB(0, 0, 255))
        formatCellBorder("D2:F6", cStyle.DOTTED, 20, bas.RGB(255, 0, 0))
  Le code Python présenté ci-dessus utilise la bibliothèque ScriptForge disponible depuis LibreOfficeDev 7.2.
Les styles de ligne sont définis comme des constantes entières. Le tableau ci-dessous répertorie les constantes des styles de ligne disponibles dans :
| Nom de constante | Valeur entière | Nom du style de ligne | 
|---|---|---|
| SOLID | 0 | Plein | 
| DOTTED | 1 | Pointillé | 
| DASHED | 2 | Tirets | 
| FINE_DASHED | 14 | Tirets fins | 
| DOUBLE_THIN | 15 | Fin double | 
| DASH_DOT | 16 | Trait point | 
| DASH_DOT_DOT | 17 | Trait point point | 
Reportez-vous à la BorderLineStyle Constant Reference dans la documentation de l'API LibreOffice pour en savoir plus sur les constantes de style de ligne.
Les objets de plage ont une propriété nommée TableBorder2 qui peut être utilisée pour formater les bordures de plage comme cela est fait dans la boîte de dialogue dans la section Disposition des lignes.
En plus des bordures supérieure, inférieure, gauche et droite, TableBorder2 définit également des bordures verticales et horizontales. La macro ci-dessous applique uniquement les bordures supérieure et inférieure à la plage "B2:E5".
    Sub TableBorder2Example
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Définit le nouveau format de ligne
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = cStyle.SOLID
        lineFormat.LineWidth = 15
        lineFormat.Color = RGB(0, 0, 0)
        ' Structure qui stocke la nouvelle définition TableBorder2
        Dim tableFormat as New com.sun.star.table.TableBorder2
        tableFormat.TopLine = lineFormat
        tableFormat.BottomLine = lineFormat
        tableFormat.IsTopLineValid = True
        tableFormat.IsBottomLineValid = True
        ' Applique le format du tableau à la plage "B2:E5"
        Dim oCell as Object
        oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B2:E5")
        oCell.TableBorder2 = tableFormat
    End Sub
  La macro peut être implémentée en Python comme suit :
    from com.sun.star.table import BorderLineStyle as cStyle
    from scriptforge import CreateScriptService
    
    def tableBorder2Example():
        bas = CreateScriptService("Basic")
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = cStyle.SOLID
        line_format.LineWidth = 18
        line_format.Color = bas.RGB(0, 0, 0)
        table_format = createUnoStruct("com.sun.star.table.TableBorder2")
        table_format.TopLine = line_format
        table_format.BottomLine = line_format
        table_format.IsTopLineValid = True
        table_format.IsBottomLineValid = True
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange("B2:E5")
        cell.TableBorder2 = table_format
  Reportez-vous à la TableBorder2 Struct Reference dans la documentation API LibreOffice pour en savoir plus sur ses attributs.