Difference between revisions of "FR/Documentation/BASIC Guide/Cells and Ranges"
m |
|||
Line 24: | Line 24: | ||
</source> | </source> | ||
− | {{ | + | {{Note|<tt>StarDesktop.CurrentComponent</tt> retourne le '''composant actif'''. Si vous travaillez dans l'EDI BASIC lorsque vous exécutez la macro, l'EDI BASIC est retourné. Une erreur d'exécution est générée, car l'EDI BASIC ne possède pas de composant de feuille de calcul. |
Enregistrez le code de l'exemple et exécutez la macro à partir d'un classeur. Pour plus d'informations, reportez-vous au chapitre [[FR/Documentation/BASIC_Guide/StarDesktop|StarDesktop]].}} | Enregistrez le code de l'exemple et exécutez la macro à partir d'un classeur. Pour plus d'informations, reportez-vous au chapitre [[FR/Documentation/BASIC_Guide/StarDesktop|StarDesktop]].}} | ||
Line 52: | Line 52: | ||
Cet exemple insère un nombre, du texte et une formule dans les champs A1, A2 et A3. | Cet exemple insère un nombre, du texte et une formule dans les champs A1, A2 et A3. | ||
− | {{ | + | {{Note|Les propriétés <tt>Value</tt>, <tt>String</tt> et <tt>Formula</tt> remplacent la méthode <tt>PutCell</tt> pour la définition des valeurs d'une cellule de tableau.}} |
{{OOo}} utilise la propriété <tt>String</tt> 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 : | {{OOo}} utilise la propriété <tt>String</tt> 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 : | ||
Line 212: | Line 212: | ||
Les fonctions de la méthode <tt>copyRange</tt> sont identiques à celles de la méthode <tt>moveRange</tt>, si ce n'est que <tt>copyRange</tt> insère une copie de la plage de cellules au lieu de la déplacer. | Les fonctions de la méthode <tt>copyRange</tt> sont identiques à celles de la méthode <tt>moveRange</tt>, si ce n'est que <tt>copyRange</tt> insère une copie de la plage de cellules au lieu de la déplacer. | ||
− | {{ | + | {{Note|Du point de vue de leur fonction, les méthodes <tt>insertCell</tt>, <tt>removeRange</tt> et <tt>copyRange</tt> de {{OOo}} Basic sont comparables aux méthodes <tt>Range.Insert</tt>, <tt>Range.Delete</tt> et <tt>Range.Copy</tt> de VBA. Les méthodes sont toutefois appliquées à l'objet <tt>Range</tt> correspondant dans VBA, tandis que, dans {{OOo}} Basic, elles sont appliquées à l'objet <tt>Sheet</tt> associé.}} |
{{PDL1}} | {{PDL1}} | ||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}} |
Latest revision as of 17:57, 6 July 2018
- Structure des classeurs
- Lignes et colonnes
- Cellules et plages
- Formatage des classeurs
- Édition des classeurs
Une 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"
StarDesktop.CurrentComponent retourne le composant actif. Si vous travaillez dans l'EDI BASIC lorsque vous exécutez la macro, l'EDI BASIC est retourné. Une erreur d'exécution est générée, car l'EDI BASIC ne possède pas de composant de feuille de calcul.
Enregistrez le code de l'exemple et exécutez la macro à partir d'un classeur. Pour plus d'informations, reportez-vous au chapitre StarDesktop. |
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 : le comptage des lignes commence à 1 pour les noms et à 0 pour les positions.
Dans Apache OpenOffice, une cellule peut être vide ou 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.
Les propriétés Value, String et Formula remplacent la méthode PutCell pour la définition des valeurs d'une cellule de tableau. |
Apache OpenOffice 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 retourne la valeur 100. En effet, le contenu de la cellule A2 a été saisi comme une chaîne et non comme un nombre.
La propriété Type permet de déterminer si une cellule contient un nombre ou une chaîne :
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 retourne 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 :
- EMPTY
- aucune valeur.
- VALUE
- nombre.
- TEXT
- chaîne.
- FORMULA
- formule.
Insertion, suppression, copie et déplacement de cellules
Outre la modification directe du contenu d'une cellule, Apache OpenOffice Calc fournit é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 et 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.
La structure com.sun.star.table.CellRangeAddress permet de définir la plage de cellules à insérer. Cette structure comporte les valeurs suivantes :
- Sheet (short)
- numéro de la feuille (la numérotation commençant à 0).
- StartColumn (long)
- première colonne de la plage de cellules (la numérotation commençant à 0).
- StartRow (long)
- première ligne de la plage de cellules (la numérotation commençant à 0).
- EndColumn (long)
- dernière colonne de la plage de cellules (la numérotation commençant à 0).
- EndRow (long)
- dernière ligne de la plage de cellules (la numérotation commençant à 0).
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 :
- NONE
- les valeurs actives conservent leur position actuelle.
- DOWN
- les cellules situées au niveau de la position d'insertion et en dessous sont déplacées vers le bas.
- RIGHT
- les cellules situées au niveau de la position d'insertion et à droite sont déplacées vers la droite.
- ROWS
- les lignes situées après la position d'insertion sont déplacées vers le bas.
- COLUMNS
- les colonnes situées après la position d'insertion sont déplacées vers la droite.
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 :
- NONE
- les valeurs actives conservent leur position actuelle.
- UP
- les cellules situées au niveau de la position d'insertion et en dessous sont déplacées vers le haut.
- LEFT
- les cellules situées au niveau de la position d'insertion et à droite sont déplacées vers la gauche.
- ROWS
- les lignes situées après la position d'insertion sont déplacées vers le haut.
- COLUMNS
- les colonnes situées après la position d'insertion sont déplacées vers la gauche.
L'interface XRangeMovement fournit 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 :
- Sheet (short)
- numéro de la feuille (la numérotation commençant à 0).
- Column (long)
- numéro de la colonne concernée (la numérotation commençant à 0).
- Row (long)
- numéro de la ligne concernée (la numérotation commençant à 0).
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.
Content on this page is licensed under the Public Documentation License (PDL). |