Contained WithinFind More DocumentationFeatured Support Resources | Download this book in PDF (1328 KB)
Chapitre 7 ClasseursStarOffice Basic fournit une interface complète pour la création et l'édition de classeurs commandées par programme. Ce chapitre décrit comment piloter les services, méthodes et propriétés concernés des classeurs. La première section aborde la structure de base des classeurs et indique comment accéder au contenu de chaque cellule pour l'éditer. La seconde section, axée sur les zones de cellules et sur les options de recherche et de remplacement du contenu des cellules, explique comment éditer efficacement les classeurs. Remarque – L'objet Range, qui permet d'accéder à toutes les zones d'une table, a été étendu dans la nouvelle API. Structure des documents basés sur des tables (classeurs)L'objet Document d'un classeur est basé sur le service com.sun.star.sheet.SpreadsheetDocument. Chaque document de ce type peut comporter plusieurs feuilles de calcul. Dans ce guide, un document basé sur des tables ou classeur désigne le document entier, tandis qu'une feuille de calcul (ou, de façon abrégée, une feuille) est une feuille (table) du document. Remarque – La terminologie concernant les feuilles de calcul et leur contenu est différente dans VBA et dans StarOffice Basic. Alors que l'objet Document est appelé Workbook dans VBA et les pages qu'il contient Worksheets, ces objets sont respectivement appelés SpreadsheetDocument et Sheet dans StarOffice Basic. ClasseursVous pouvez accéder à chaque feuille de calcul d'un classeur via la liste Sheets. Les exemples qui suivent indiquent comment accéder à une feuille par son numéro ou par son nom. Exemple 1 : accès par le numéro (la numérotation commence à 0) Dim Doc As Object Dim Sheet As Object Doc = StarDesktop.CurrentComponent Sheet = Doc. Sheets (0) Exemple 2 : accès par le nom Dim Doc As Object
Dim Sheet As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
Dans le premier exemple, on accède à la feuille par son numéro (la numérotation commençant à 0). Dans le second, on y accède par son nom et par la méthode getByName. L'objet Sheet obtenu par la méthode getByName prend en charge le service com.sun.star.sheet.Spreadsheet. Outre les différentes interfaces qu'il propose pour l'édition du contenu, ce service fournit les propriétés suivantes : Création, suppression et attribution de nom à des feuillesLa liste Sheets d'un classeur permet également de créer, de supprimer et de renommer des feuilles individuelles. L'exemple ci-dessous utilise la méthode hasByName pour vérifier si une feuille nommée MySheet existe. Si c'est le cas, la méthode détermine une référence d'objet correspondante à l'aide de la méthode getByName, puis enregistre cette référence dans une variable de Sheet. Si la feuille correspondante n'existe pas, elle est créée par l'appel createInstance et insérée dans le classeur par la méthode insertByName. Dim Doc As Object
Dim Sheet As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
If Doc.Sheets.hasByName("MySheet") Then
Sheet = Doc.Sheets.getByName("MySheet")
Else
Sheet = Doc.createInstance("com.sun.star.sheet.Spreadsheet")
Doc.Sheets.insertByName("MySheet", Sheet)
End If
Les méthodes getByName et insertByName proviennent de l'interface com.sun.star.container.XnameContainer, dont vous trouverez une description dans le Chapitre 4, Introduction à l'API StarOffice. Lignes et colonnesChaque feuille contient une liste de ses propres lignes et colonnes. Ces listes sont disponibles via les propriétés Rows et Columns de l'objet Spreadsheet et prennent en charge les services com.sun.star.table.TableColumns et/ou com.sun.star.table.TableRows. L'exemple suivant crée deux objets qui renvoient à la première ligne et à la première colonne d'une feuille, et stocke les références dans les variables d'objets FirstCol et FirstRow. Dim Doc As Object Dim Sheet As Object Dim FirstRow As Object Dim FirstCol As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) FirstCol = Sheet.Columns(0) FirstRow = Sheet.Rows(0) Les objets Column prennent en charge le service com.sun.star.table.TableColumn, dont les propriétés sont les suivantes :
Pour obtenir une largeur de colonne optimale, la propriété OptimalWidth doit être définie sur True. Il est possible de modifier la largeur d'une cellule individuelle sans modifier la largeur de la colonne qui la contient. Sur un plan pratique, OptimalWidth est davantage une méthode qu'une propriété. Les objets Row sont basés sur le service com.sun.star.table.RowColumn, dont les propriétés sont les suivantes :
Si la propriété OptimalHeight d'une ligne est définie sur True, sa hauteur change automatiquement lorsque celle d'une cellule qu'elle contient est modifiée. L'optimisation automatique se poursuit jusqu'à ce qu'une hauteur absolue soit assignée à la ligne par la propriété Height. L'exemple suivant active l'optimisation automatique de la hauteur de ligne pour les cinq premières lignes de la feuille et rend la deuxième colonne invisible. Dim Doc As Object Dim Sheet As Object Dim Row As Object Dim Col As Object Dim I As Integer Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) For I = 0 To 4 Row = Sheet.Rows(I) Row.OptimalHeight = True Next I Col = Sheet.Columns(1) Col.IsVisible = False Remarque – Vous pouvez accéder aux listes Rows et Columns via un index dans StarOffice Basic. Contrairement à VBA, l'index de la première colonne est 0 (et non 1). Insertion et suppression de lignes et de colonnesLes objets Rows et Columns d'une feuille peuvent accéder à des lignes et colonnes existantes, mais également en insérer et en supprimer. Dim Doc As Object Dim Sheet As Object Dim NewColumn As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Sheet.Columns.insertByIndex(3, 1) Sheet.Columns.removeByIndex(5, 1) Cet exemple utilise la méthode insertByIndex pour insérer une nouvelle colonne à l'emplacement de la quatrième colonne dans la feuille (index 3, la numérotation commençant à 0). Le second paramètre spécifie le nombre de colonnes à insérer (dans cet exemple, une). La méthode removeByIndex supprime la sixième colonne (index 5). Là aussi, le second paramètre spécifie le nombre de colonnes à supprimer. Les méthodes d'insertion et de suppression de lignes utilisent la fonction de l'objet Rows de la même manière que les méthodes d'édition des colonnes utilisent l'objet Columns. CellulesUne feuille de calcul est constituée d'une liste de cellules à deux dimensions. Chaque cellule est définie par ses positions X et Y par rapport à la cellule supérieure gauche, dont la position est (0,0). L'exemple suivant crée un objet qui renvoie à la cellule supérieure gauche et insère du texte dans cette cellule : Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(0, 0) Cell.String = "Test" Outre ses coordonnées numériques, chaque cellule d'une feuille porte un nom : par exemple, la cellule supérieure gauche (0,0) d'une feuille est nommée A1. La lettre A représente la colonne et le chiffre 1 la ligne. Il convient de ne pas confondre le nom et la position d'une cellule, car le comptage des lignes commence à 1 pour les noms et à 0 pour les positions. Dans StarOffice, une cellule peut être vide, ou bien contenir du texte, des nombres ou des formules. Le type de cellule n'est pas déterminé par le contenu qui y est enregistré, mais par la propriété de l'objet utilisé pour son entrée. Les nombres peuvent être insérés et appelés à l'aide de la propriété Value, le texte à l'aide de la propriété String et les formules à l'aide de la propriété Formula. Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(0, 0) Cell.Value = 100 Cell = Sheet.getCellByPosition(0, 1) Cell.String = "Test" Cell = Sheet.getCellByPosition(0, 2) Cell.Formula = "=A1" Cet exemple insère un nombre, du texte et une formule dans les champs A1, A2 et A3. Remarque – Les propriétés Value, String et Formula remplacent la méthode PutCell pour la définition des valeurs d'une cellule de tableau. StarOffice utilise la propriété String comme du texte pour traiter le contenu saisi dans les cellules, même si ce contenu est un nombre. Les nombres sont alignés à gauche dans la cellule et non pas à droite. Lors de l'utilisation de formules, il convient également de différencier le texte et les nombres : Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(0, 0) Cell.Value = 100 Cell = Sheet.getCellByPosition(0, 1) Cell.String = 1000 Cell = Sheet.getCellByPosition(0, 2) Cell.Formula = "=A1+A2" MsgBox Cell.Value Bien que la cellule A1 contienne la valeur 100 et la cellule A2 la valeur 1 000, la formule A1+A2 renvoie la valeur 100. En effet, le contenu de la cellule A2 a été saisi comme une chaîne et non comme un nombre. Pour savoir si une cellule contient un nombre ou une chaîne, utilisez la propriété Type : Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) Cell.Value = 1000 Select Case Cell.Type Case com.sun.star.table.CellContentType.EMPTY MsgBox "Content: Empty" Case com.sun.star.table.CellContentType.VALUE MsgBox "Content: Value" Case com.sun.star.table.CellContentType.TEXT MsgBox "Content: Text" Case com.sun.star.table.CellContentType.FORMULA MsgBox "Content: Formula" End Select La propriété Cell.Type renvoie une valeur pour l'énumération com.sun.star.table.CellContentType qui identifie le type de contenu d'une cellule. Les valeurs possibles sont les suivantes :
Insertion, suppression, copie et déplacement de cellulesOutre la modification directe du contenu d'une cellule, StarOffice Calc offre également une interface permettant d'insérer, de supprimer, de copier ou de fusionner des cellules. L'interface com.sun.star.sheet.XRangeMovement, accessible par l'objet Spreadsheet, fournit quatre méthodes de modification du contenu des cellules. La méthode insertCell sert à insérer des cellules dans une feuille. Dim Doc As Object Dim Sheet As Object Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) CellRangeAddress.Sheet = 0 CellRangeAddress.StartColumn = 1 CellRangeAddress.StartRow = 1 CellRangeAddress.EndColumn = 2 CellRangeAddress.EndRow = 2 Sheet.insertCells(CellRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN) Cet exemple insère une plage de cellules comportant deux lignes sur deux colonnes dans la deuxième colonne et la deuxième ligne (portant toutes deux le numéro 1) de la première feuille (numéro 0) du classeur. Toutes les valeurs existantes de la plage de cellules spécifiée sont déplacées sous cette dernière. Pour définir la plage de cellules à insérer, utilisez la structure com.sun.star.table.CellRangeAddress. Cette structure comporte les valeurs suivantes :
La structure CellRangeAddress complétée doit être passée comme premier paramètre à la méthode insertCells. Le second paramètre de insertCells contient une valeur de l'énumération com.sun.star.sheet.CellInsertMode et définit le traitement réservé aux valeurs situées devant la position d'insertion. L'énumération CellInsertMode reconnaît les valeurs suivantes :
La méthode removeRange est l'équivalent de la méthode insertCells. Cette méthode supprime de la feuille la plage de cellules définie dans la structure CellRangeAddress. Dim Doc As Object Dim Sheet As Object Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) CellRangeAddress.Sheet = 0 CellRangeAddress.StartColumn = 1 CellRangeAddress.StartRow = 1 CellRangeAddress.EndColumn = 2 CellRangeAddress.EndRow = 2 Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.UP) Cet exemple supprime la plage de cellules B2:C3 de la feuille et déplace de deux colonnes vers le haut les cellules situées en dessous. Ce type de suppression est défini par l'une des valeurs suivantes provenant de l'énumération com.sun.star.sheet.CellDeleteMode :
L'interface XRangeMovement comporte deux méthodes supplémentaires pour déplacer (moveRange) ou copier (copyRange) les plages de cellules. L'exemple suivant déplace la plage B2:C3 de façon à ce qu'elle commence à la position A6 : Dim Doc As Object Dim Sheet As Object Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress Dim CellAddress As New com.sun.star.table.CellAddress Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) CellRangeAddress.Sheet = 0 CellRangeAddress.StartColumn = 1 CellRangeAddress.StartRow = 1 CellRangeAddress.EndColumn = 2 CellRangeAddress.EndRow = 2 CellAddress.Sheet = 0 CellAddress.Column = 0 CellAddress.Row = 5 Sheet.moveRange(CellAddress, CellRangeAddress) Outre la structure CellRangeAdress, la méthode moveRange attend une structure com.sun.star.table.CellAddress pour définir l'origine de la zone de destination du déplacement. La méthode CellAddress fournit les valeurs suivantes :
Le contenu des cellules de la plage cible est toujours écrasé par la méthode moveRange. Contrairement à la méthode InsertCells, la méthode removeRange ne fournit pas de paramètre permettant des déplacements automatiques. Les fonctions de la méthode copyRange sont identiques à celles de la méthode moveRange, si ce n'est que copyRange insère une copie de la plage de cellules au lieu de la déplacer. Remarque – Du point de vue de leur fonction, les méthodes insertCell, removeRange et copyRange de StarOffice Basic sont comparables aux méthodes Range.Insert, Range.Delete et Range.Copy de VBA. Les méthodes sont toutefois appliquées à l'objet Range correspondant dans VBA, tandis que dans StarOffice Basic, elles sont appliquées à l'objet Sheet associé. FormatageUn classeur fournit des propriétés et des méthodes de formatage des cellules et des pages. Propriétés de cellulesIl existe de nombreuses options de formatage des cellules, telles que la spécification du type de police et de la taille du texte. Chaque cellule prend en charge les services com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties, dont les principales propriétés sont décrites au Chapitre 6, Documents texte. Le formatage spécial des cellules est traité par le service com.sun.star.table.CellProperties. Les principales propriétés de ce service sont décrites dans les sections qui suivent. Vous pouvez appliquer toutes les propriétés nommées à des cellules individuelles et à des plages de cellules. Remarque – L'objet CellProperties de l'API StarOffice est comparable à l'objet Interior de VBA, qui définit également les propriétés propres aux cellules. Couleur d'arrière-plan et ombresLe service com.sun.star.table.CellProperties fournit les propriétés suivantes pour la définition des couleurs d'arrière-plan et des ombres :
La structure com.sun.star.table.ShadowFormat et les spécifications détaillées des ombres de cellule ont la structure suivante :
L'exemple suivant inscrit le nombre 1 000 dans la cellule B2, applique la couleur rouge à l'arrière-plan à l'aide de la propriété CellBackColor, puis crée une ombre gris clair pour la cellule, qui est déplacée de 1 mm vers la gauche et vers le bas. Dim Doc As Object Dim Sheet As Object Dim Cell As Object Dim ShadowFormat As New com.sun.star.table.ShadowFormat Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) Cell.Value = 1000 Cell.CellBackColor = RGB(255, 0, 0) ShadowFormat.Location = com.sun.star.table.ShadowLocation.BOTTOM_RIGHT ShadowFormat.ShadowWidth = 100 ShadowFormat.Color = RGB(160, 160, 160) Cell.ShadowFormat = ShadowFormat JustificationStarOffice fournit diverses fonctions permettant de modifier la justification d'un texte dans une cellule de tableau. Les propriétés suivantes définissent la justification horizontale et verticale d'un texte :
L'exemple suivant indique comment empiler le contenu d'une cellule pour que chaque caractère s'imprime l'un en dessous de l'autre dans le coin supérieur gauche de la cellule. Les caractères ne subissent aucune rotation. Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) Cell.Value = 1000 Cell.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT Cell.VertJustify = com.sun.star.table.CellVertJustify.TOP Cell.Orientation = com.sun.star.table.CellOrientation.STACKED Formats de nombre, de date et de texteStarOffice propose plusieurs formats de date et d'heure prédéfinis. Chacun de ces formats comporte un numéro de série utilisé pour assigner le format correspondant aux cellules à l'aide de la propriété NumberFormat. StarOffice fournit les méthodes queryKey et addNew qui permettent d'accéder à des formats numériques existants et de créer ses propres formats numériques. Ces méthodes sont accessibles par l'appel d'objet suivant : NumberFormats = Doc.NumberFormats Un format se spécifie à l'aide d'une chaîne de format structurée de la même façon que la fonction de format de StarOffice Basic. Il existe toutefois une différence importante : alors que le format de commande requiert des abréviations, symboles décimaux et caractères séparateurs de milliers anglais, les abréviations propres au pays doivent être utilisées dans la structure d'un format de commande pour l'objet NumberFormats. L'exemple suivant formate la cellule B2 pour que les nombres s'affichent avec trois décimales et qu'ils utilisent les virgules comme séparateurs de milliers. Dim Doc As Object Dim Sheet As Object Dim Cell As Object Dim NumberFormats As Object Dim NumberFormatString As String Dim NumberFormatId As Long Dim LocalSettings As New com.sun.star.lang.Locale Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) Cell.Value = 23400.3523565 LocalSettings.Language = "en" LocalSettings.Country = "us" NumberFormats = Doc.NumberFormats NumberFormatString = "#,##0.000" NumberFormatId = NumberFormats.queryKey(NumberFormatString, LocalSettings, True) If NumberFormatId = -1 Then NumberFormatId = NumberFormats.addNew(NumberFormatString, LocalSettings) End If MsgBox NumberFormatId Cell.NumberFormat = NumberFormatId La boîte de dialogue Formatage des cellules de StarOffice présente un aperçu des différentes options de formatage des cellules. Propriétés de pageLes propriétés de page sont des options de formatage permettant de positionner le contenu d'un document sur une page, ainsi que des éléments visuels qui se répètent d'une page à l'autre. Il s'agit notamment des éléments suivants :
La procédure de définition des formats de page diffère des autres formes de formatage. En effet, alors que les formats de cellules, de paragraphes et de caractères peuvent être appliqués directement, les formats de page peuvent également être définis et appliqués indirectement à l'aide des styles de page. Par exemple, les en-têtes ou les pieds de page sont ajoutés au style de page. Les sections qui suivent décrivent les principales options de formatage des pages de feuilles de calcul. La plupart des styles décrits peuvent également être appliqués aux documents texte. Les propriétés de page valides pour les deux types de documents sont définies dans le service com.sun.star.style.PageProperties. Les propriétés de page qui ne s'appliquent qu'aux classeurs sont définies dans le service com.sun.star.sheet.TablePageStyle. Remarque – Les propriétés de page (marges, bordures, etc.) d'un document Microsoft Office sont définies par un objet PageSetup au niveau de l'objet Worksheet (Excel) ou Document (Word). Dans StarOffice, ces propriétés sont définies à l'aide d'un style de page lié au document associé. Arrière-plan de pageLe service com.sun.star.style.PageProperties définit les propriétés d'arrière-plan de page suivantes :
Format de pageLe format de page est défini à l'aide des propriétés suivantes du service com.sun.star.style.PageProperties : L'exemple suivant règle la taille de page du style de page par défaut (Default) sur le format paysage DIN A5 (hauteur 14,8 cm, largeur 21 cm) : Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.IsLandscape = True
DefPage.Width = 21000
DefPage.Height = 14800
Marge, bordure et ombreLe service com.sun.star.style.PageProperties fournit les propriétés suivantes pour l'ajustement des marges, des bordures et des ombres :
L'exemple suivant définit les bordures gauche et droite du style de page par défaut (Default) à 1 centimètre. Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.LeftMargin = 1000
DefPage.RightMargin = 1000
En-têtes et pieds de pageLes en-têtes et pieds de page d'un document font partie des propriétés de la page et sont définis à l'aide du service com.sun.star.style.PageProperties. Les propriétés de formatage des en-têtes sont les suivantes :
Les propriétés de formatage des pieds de page sont les suivantes :
Modification du texte des en-têtes et pieds de pagesLe contenu des en-têtes et pieds de pages d'un classeur est accessible via les propriétés suivantes :
Si vous n'avez pas besoin de faire la distinction entre pages paires et impaires dans les en-têtes ou les pieds de page (la valeur de la propriété FooterIsShared est False), définissez les propriétés des en-têtes et des pieds de page sur les pages impaires. Tous les objets nommés renvoient un objet prenant en charge le service com.sun.star.sheet.HeaderFooterContent. À l'aide des propriétés non authentiques LeftText, CenterText et RightText, ce service fournit trois éléments de texte aux en-têtes et pieds de page de StarOffice Calc. L'exemple ci-dessous écrit la valeur "Just a Test" (ceci est un test) dans le champ texte situé à gauche de l'en-tête à partir du modèle Default. Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object
Dim HText As Object
Dim HContent As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.HeaderIsOn = True
HContent = DefPage.RightPageHeaderContent
HText = HContent.LeftText
HText.String = "Just a Test."
DefPage.RightPageHeaderContent = HContent
Notez bien la dernière ligne de l'exemple : une fois le texte modifié, l'objet TextContent doit être de nouveau assigné à l'en-tête pour que la modification prenne effet. Un autre mécanisme de modification du texte des en-têtes et pieds de page existe pour les documents texte (StarOffice Writer), car ceux-ci sont constitués d'un bloc de texte unique. Les propriétés suivantes sont définies dans le service com.sun.star.style.PageProperties :
L'exemple suivant crée un en-tête dans le style de page par défaut (Default) des documents texte et ajoute le texte "Just a Test" (ceci est un test) à cet en-tête. Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object
Dim HText As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.HeaderIsOn = True
HText = DefPage.HeaderText
HText.String = "Just a Test."
Dans cet exemple, l'accès est fourni directement par la propriété HeaderText du style de page, plutôt que par l'objet HeaderFooterContent. Centrage (feuilles de calcul uniquement)Le service com.sun.star.sheet.TablePageStyle, utilisé uniquement dans les styles de page de StarOffice Calc, permet de centrer sur la page les plages de cellules que vous souhaitez imprimer. Ce service fournit les propriétés suivantes :
Définition des éléments à imprimer (feuilles de calcul uniquement)Lorsque vous formatez des feuilles, vous pouvez définir si les éléments de la page doivent être visibles ou non. Pour cela, le service com.sun.star.sheet.TablePageStyle propose les propriétés suivantes :
Édition efficace des classeursAlors que la section précédente décrivait la structure principale des classeurs, la présente section est consacrée aux services permettant d'accéder facilement à des cellules individuelles ou à des plages de cellules. Plages de cellulesEn plus de l'objet destiné aux cellules individuelles (voir le service com.sun.star.table.Cell), StarOffice propose également des objets représentant des plages de cellules. Les objets tels que CellRange sont créés avec l'appel getCellRangeByName de l'objet Spreadsheet : Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("A1:C15")
Le signe deux-points (:) sert à spécifier une plage de cellules dans une feuille de calcul. Par exemple, A1:C15 représente toutes les cellules des lignes 1 à 15 et des colonnes A, B et C. L'emplacement des cellules individuelles dans une plage de cellules peut être déterminé avec la méthode getCellByPosition, où les coordonnées de la cellule supérieure gauche de la plage sont (0, 0). L'exemple suivant utilise cette méthode pour créer un objet à partir de la cellule C3. Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Dim Cell As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("B2:D4")
Cell = CellRange.GetCellByPosition(1, 1)
Formatage de plages de cellulesTout comme pour les cellules individuelles, vous pouvez appliquer un formatage à des plages de cellules en utilisant le service com.sun.star.table.CellProperties. Pour plus d'informations et d'autres exemples de ce service, reportez-vous à la section Formatage. Calculs avec des plages de cellulesVous pouvez utiliser la méthode computeFunction pour effectuer des opérations mathématiques sur des plages de cellules. La méthode computeFunction attend une constante comme paramètre de description de la fonction mathématique à utiliser. Les constantes associées sont définies dans l'énumération com.sun.star.sheet.GeneralFunction. Les valeurs disponibles sont les suivantes :
L'exemple suivant calcule la valeur moyenne de la plage A1:C3 et affiche le résultat dans une boîte de message : Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("A1:C3")
MsgBox CellRange.computeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE)
Suppression du contenu des cellulesLa méthode clearContents simplifie le processus de suppression du contenu des cellules ou des plages de cellules, car elle permet de supprimer un type de contenu particulier d'une plage de cellules. L'exemple suivant supprime toutes les chaînes et les informations de formatage direct de la plage B2:C3. Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Dim Flags As Long
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
CellRange = Sheet.getCellRangeByName("B2:C3")
Flags = com.sun.star.sheet.CellFlags.STRING + _
com.sun.star.sheet.CellFlags.HARDATTR
CellRange.clearContents(Flags)
Les drapeaux spécifiés dans clearContents proviennent de la liste de constantes com.sun.star.sheet.CellFlags. Cette liste fournit les éléments suivants :
Vous pouvez également ajouter un ensemble de constantes pour supprimer différentes informations avec un appel de clearContents. Recherche et remplacement du contenu des cellulesLes classeurs, comme les documents texte, proposent une fonction de recherche et remplacement. Les objets Descriptor pour la recherche et le remplacement dans les classeurs ne sont pas créés directement au moyen de l'objet Document, mais plutôt avec la liste Sheets. L'exemple suivant illustre un processus de recherche et de remplacement : Dim Doc As Object Dim Sheet As Object Dim ReplaceDescriptor As Object Dim I As Integer Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) ReplaceDescriptor = Sheet.createReplaceDescriptor() ReplaceDescriptor.SearchString = "is" ReplaceDescriptor.ReplaceString = "was" For I = 0 to Doc.Sheets.Count - 1 Sheet = Doc.Sheets(I) Sheet.ReplaceAll(ReplaceDescriptor) Next I Cet exemple utilise la première page du document pour créer un objet ReplaceDescriptor, puis l'applique à toutes les pages dans une boucle. |