SFDocuments. Service Calc

La bibliothèque partagée SFDocuments fournit un certain nombre de méthodes et de propriétés pour faciliter la gestion et la manipulation des documents LibreOffice.

Le service SFDocuments.Calc est une sous-classe du service SFDocuments.Document. Toutes les méthodes et propriétés définies pour le service Document sont également accessibles à l'aide d'une instance de service Calc.

Le service Calc se concentre sur :

note

Cette page d'aide décrit les méthodes et propriétés applicables uniquement aux documents Calc.


Invocation du service

Avant d'utiliser le service Calc, la bibliothèque ScriptForge doit être chargée ou importée :

note

• Les macros Basic nécessitent de charger la bibliothèque ScriptForge à l'aide de l'instruction suivante :
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Les scripts Python nécessitent un import depuis le module scriptforge :
from scriptforge import CreateScriptService


Le service Calc est étroitement lié au service UI de la bibliothèque ScriptForge. Vous trouverez ci-dessous quelques exemples de la façon dont le service Calc peut être appelé.

En Basic :

L'extrait de code ci-dessous crée une instance de service Calc qui correspond au document Calc actuellement actif.


    Set oDoc = CreateScriptService("Calc")
  

Une autre façon de créer une instance du service Calc consiste à utiliser le service UI. Dans l'exemple suivant, un nouveau document Calc est créé et oDoc est une instance de service Calc :


    Dim ui As Object, oDoc As Object
    Set ui = CreateScriptService("UI")
    Set oDoc = ui.CreateDocument("Calc")
  

Ou en utilisant la méthode OpenDocument du service UI :


    Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")
  

Il est également possible d'instancier le service Calc en spécifiant un nom de fenêtre pour la méthode CreateScriptService :


    Dim oDoc As Object
    Set oDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")
  

Dans l'exemple ci-dessus, "MyFile.ods" est le nom d'une fenêtre de document ouverte. Si cet argument n'est pas fourni, la fenêtre active est considérée.

Il est également possible d'invoquer le service Calc en utilisant le document référencé par ThisComponent. Ceci est particulièrement utile lors de l'exécution d'une macro à partir de l'IDE Basic.


    Dim oDoc As Object
    Set oDoc = CreateScriptService("Calc", ThisComponent)
  

Il est recommandé de libérer les ressources après utilisation :


    Set oDoc = oDoc.Dispose()
  

Cependant, si le document a été fermé à l'aide de la méthode CloseDocument, il devient inutile de libérer des ressources à l'aide de la commande décrite ci-dessus.

En Python

    myDoc = CreateScriptService("Calc")
  

    ui = CreateScriptService("UI")
    myDoc = ui.CreateDocument("Calc")
  

    myDoc = ui.OpenDocument(r"C:\Documents\MyFile.ods")
  

    myDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")
    myDoc.Dispose()
  

    bas = CreateScriptService("Basic")
    myDoc = CreateScriptService("Calc", bas.ThisComponent)
  
tip

L'utilisation du préfixe "SFDocuments." lors de l'appel du service est facultative.


Définitions

De nombreuses méthodes nécessitent une "Sheet" ou une "Range" comme argument. Les cellules individuelles sont considérées comme un cas particulier d'une Range.

Les deux peuvent être exprimés soit sous forme de chaîne, soit sous forme de référence (= objet) selon la situation :

Exemple :

L'exemple ci-dessous copie les données du document A (ouvert en lecture seule et masqué) vers le document B.

En Basic :

    Dim oDocA As Object, oDocB As Object
    Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
    Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
    oDocB.CopyToRange(oDocA.Range("SheetX.D4:F8"), "D2:F6") 'CopyToRange(source, target)
  
En Python

    docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
    docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
    docB.CopyToRange(docA.Range("SheetX.D4:F8"), "D2:F6")
  

SheetName

Soit le nom de la feuille en tant que string ou un object produit par la propriété .Sheet.

Le raccourci "~" (tilde) représente la feuille active.

RangeName

Soit une chaîne désignant un ensemble de cellules contiguës situées dans une feuille de l'instance active ou un object produit par la propriété .Range.

Le raccourci "~" (tilde) représente la sélection actuelle ou la première plage sélectionnée si plusieurs plages sont sélectionnées.

Le raccourci "*" représente toutes les cellules utilisées.

Le nom de la feuille est facultatif lors de la définition d'une plage. Si aucun nom de feuille n'est fourni, la feuille active est utilisée. Les guillemets simples et les signes $ environnants sont autorisés mais ignorés.

Lorsque vous spécifiez un SheetName en tant que chaîne, l'utilisation de guillemets simples pour entourer le nom de la feuille est requise si le nom contient des espaces vides " " ou des points ".".

Les exemples ci-dessous illustrent dans quels cas l'utilisation de guillemets simples est obligatoire :


      ' L'utilisation de guillemets simples est facultative
      oDoc.clearAll("SheetA.A1:B10")
      oDoc.clearAll("'SheetA'.A1:B10")
      ' L'utilisation de guillemets simples est requise
      oDoc.clearAll("'Sheet.A'.A1:B10")
    
tip

À l'exception de la propriété CurrentSelection, le service Calc ne considère que des plages uniques de cellules.


Exemples de plages valides

1) $'SheetX'.D2
2) $D$2

Une cellule unique

1) $'SheetX'.D2:F6
2) D2:D10

Plage unique avec des cellules multiples

$'SheetX'.*

Toutes les cellules utilisées dans la feuille donnée

1) $'SheetX'.A:A (column A)
2) 3:5 (rows 3 to 5)

Toutes les cellules dans des colonnes ou des lignes contiguës jusqu'à la dernière cellule utilisée

myRange

Une plage nommée "myRange" au niveau du tableur

1) ~.someRange
2) SheetX.someRange

Un nom de plage au niveau de la feuille.

myDoc.Range("SheetX.D2:F6")

Une plage au sein de la feuille SheetX dans le fichier associé à l'instance myDoc Calc

~.~ ou ~

La sélection actuelle dans la feuille active


Propriétés

Toutes les propriétés génériques d'un document sont implicitement applicables également aux documents Calc. Pour plus d'informations, consultez la Page d'aide du service Document.

Les propriétés spécifiquement disponibles pour les documents Calc sont :

Nom

Lecture seule

Argument

Type de retour

Description

CurrentSelection

Non

Auncune

Chaîne ou matrice de chaînes

La plage sélectionnée unique sous forme de chaîne ou la liste des plages sélectionnées sous forme de matrice.

FirstCell

Oui

SheetName or RangeName as String

String

Renvoie la première cellule utilisée dans une plage ou une feuille donnée.

FirstColumn

Oui

SheetName or RangeName as String

Long

Renvoie la première cellule utilisée dans une plage ou une feuille de données.

FirstRow

Oui

SheetName or RangeName as String

Long

Renvoie le numéro de ligne le plus haut dans une plage ou une feuille donnée.

Height

Oui

RangeName As String

Long

Le nombre de lignes (>= 1) dans la plage donnée.

LastCell

Oui

SheetName or RangeName as String

String

Renvoie la dernière cellule utilisée dans une plage ou une feuille donnée.

LastColumn

Oui

SheetName or RangeName as String

Long

La dernière colonne utilisée dans une plage ou une feuille donnée.

LastRow

Oui

SheetName or RangeName as String

Long

La dernière ligne utilisée dans une plage ou une feuille donnée.

Range

Oui

RangeName As String

Object

Une référence de plage qui peut être utilisée comme argument de méthodes telles que CopyToRange.

Region

Oui

RangeName As String

String

Renvoie l'adresse de la plus petite zone qui contient la plage spécifiée afin que la zone soit entourée de cellules vides ou des bords de la feuille. Cela équivaut à appliquer le raccourci à la plage donnée.

Sheet

Oui

SheetName As String

Object

Une référence de feuille qui peut être utilisée comme argument de méthodes telles que CopySheet.

SheetName

Oui

RangeName As String

String

Renvoie le nom de feuille d'une plage d'adresses donnée.

Sheets

Oui

Auncune

Matrice de chaînes

La liste contenant les noms de toutes les feuilles existantes.

Width

Oui

RangeName As String

Long

Le nombre de colonnes (>= 1) dans la plage donnée.

XCellRange

Oui

RangeName As String

Object

Un objet UNO com.sun.star.Table.XCellRange.

XSheetCellCursor

Oui

RangeName As String

Object

Un objet UNO com.sun.star.sheet.XSheetCellCursor. Après avoir déplacé le curseur, l'adresse de plage résultante est accessible via la propriété UNO AbsoluteName de l'objet curseur, qui renvoie une valeur de chaîne pouvant être utilisée comme argument pour les propriétés et les méthodes du service Calc.

XSpreadsheet

Oui

SheetName As String

Object

Un objet UNO com.sun.star.sheet.XSpreadsheet


tip

Visitez le site Web de la documentation de l'API LibreOffice pour en savoir plus sur les objets UNO XCellRange, XSheetCellCursor et XSpreadsheet.


Méthodes

Liste des méthodes dans le service Calc

A1Style
Activate
Charts
ClearAll
ClearFormats
ClearValues
CompactLeft
CompactUp
CopySheet
CopySheetFromFile
CopyToCell
CopyToRange
CreateChart
CreatePivotTable
DAvg
DCount

DMax
DMin
DSum
ExportRangeToFile
Forms
GetColumnName
GetFormula
GetValue
ImportFromCSVFile
ImportFromDatabase
ImportStylesFromFile
InsertSheet
MoveRange
MoveSheet
Offset
OpenRangeSelector

PrintOut
Printf
RemoveDuplicates
RemoveSheet
RenameSheet
SetArray
SetCellStyle
SetFormula
SetValue
ShiftDown
ShiftLeft
ShiftRight
ShiftUp
SortRange



A1Style

Renvoie une adresse de plage sous forme de chaîne basée sur les coordonnées de la feuille, c'est-à-dire les numéros de ligne et de colonne.

Si seule une paire de coordonnées est fournie, une adresse à une seule cellule est renvoyée. Des arguments supplémentaires peuvent spécifier la cellule en bas à droite d'une plage rectangulaire.

Syntaxe :

svc.A1Style(row1: int, column1: int, row2: int = 0; column2: int = 0; sheetname: str = "~"): str

Paramètres :

row1, column1 : spécifier les numéros de ligne et de colonne de la cellule en haut à gauche de la plage à considérer. Les numéros de ligne et de colonne commencent à 1.

row2, column2 : spécifier les numéros de ligne et de colonne de la cellule en bas à droite dans la plage à considérer. Si ces arguments ne sont pas fournis, ou si des valeurs inférieures à row1 et column1 sont données, alors l'adresse de la plage de cellules unique représentée par row1 et column1 est renvoyé.

sheetname : le nom de la feuille à ajouter à l'adresse de plage renvoyée. La feuille doit exister. La valeur par défaut est "~" correspondant à la feuille actuellement active.

Exemple :

Les exemples ci-dessous en Basic et Python considèrent que "Sheet1" est la feuille actuellement active.

En Basic :

    Set oDoc = CreateScriptService("Calc")
    addr1 = oDoc.A1Style(1, 1) ' '$Sheet1'.$A$1
    addr2 = oDoc.A1Style(2, 2, 3, 6) ' '$Sheet1'.$B$2:$F$3
    addr3 = oDoc.A1Style(2, 2, 0, 6) ' '$Sheet1'.$B$2
    addr4 = oDoc.A1Style(3, 4, 3, 8, "Sheet2") ' '$Sheet2'.$D$3:$H$3
    addr5 = oDoc.A1Style(5, 1, SheetName := "Sheet3") ' '$Sheet3'.$A$5
  
En Python

    doc = CreateScriptService("Calc")
    addr1 = doc.A1Style(1, 1) # '$Sheet1'.$A$1
    addr2 = doc.A1Style(2, 2, 3, 6) # '$Sheet1'.$B$2:$F$3
    addr3 = doc.A1Style(2, 2, 0, 6) # '$Sheet1'.$B$2
    addr4 = doc.A1Style(3, 4, 3, 8, "Sheet2") # '$Sheet2'.$D$3:$H$3
    addr5 = doc.A1Style(5, 1, sheetname="Sheet3") # '$Sheet3'.$A$5
  
tip

La méthode A1Style peut être combinée avec l'une des nombreuses propriétés et méthodes du service Calc qui nécessitent une plage comme argument, telles que GetValue, GetFormula, ClearAll, etc.


Activate

Si l'argument sheetname est fourni, la feuille donnée est activée et elle devient la feuille actuellement sélectionnée. Si l'argument est absent, alors la fenêtre du document est activée.

Syntaxe :

svc.Activate(sheetname: str = ""): bool

Paramètres :

sheetname : Le nom de la feuille à activer dans le document. La valeur par défaut est une chaîne vide, ce qui signifie que la fenêtre du document sera activée sans changer la feuille active.

Exemple :

L'exemple ci-dessous active la feuille nommée "Sheet4" dans le document actuellement actif.

En Basic :

    Dim ui as Variant, oDoc as Object
    Set ui = CreateScriptService("UI")
    Set oDoc = ui.GetDocument(ui.ActiveWindow)
    oDoc.Activate("Sheet4")
  
En Python

    ui = CreateScriptService("UI")
    myDoc = ui.GetDocument(ui.ActiveWindow)
    myDoc.Activate("Sheet4")
  
tip

L'activation d'une feuille n'a de sens que si elle est effectuée sur un document Calc. Pour vous assurer d'avoir un document Calc à portée de main, vous pouvez utiliser la propriété isCalc de l'objet document, qui renvoie True s'il s'agit d'un document Calc et False sinon.


Charts

Renvoie soit la liste avec les noms de tous les objets de diagramme dans une feuille donnée, soit une seule instance de service Chart.

Syntaxe :

svc.Charts(sheetname: str, chartname: str = ""): obj

Paramètres :

sheetname : le nom de la feuille à partir de laquelle la liste des diagrammes doit être récupérée ou où se trouve le diagramme spécifié.

chartname : le nom défini par l'utilisateur de l'objet diagramme à renvoyer. Si le diagramme n'a pas de nom défini par l'utilisateur, le nom d'objet interne peut être utilisé. Si cet argument est absent, la liste des noms de diagrammes dans la feuille spécifiée est renvoyée.

tip

Utilisez la barre latérale du Navigateur pour vérifier les noms attribués aux diagrammes dans la catégorie Objets OLE.


Exemple :

En Basic :

L'exemple ci-dessous montre le nombre d'objets de diagramme dans "Sheet1".


    Dim arrNames as Object
    arrNames = oDoc.Charts("Sheet1")
    MsgBox "There are " & UBound(arrNames) + 1 & " charts in Sheet1"
  

L'exemple suivant accède au diagramme nommé « MyChart » dans « Sheet1 » et imprime son type.


    Dim oChart as Object
    oChart = oDoc.Charts("Sheet1", "MyChart")
    MsgBox oChart.ChartType
  
En Python

    bas = CreateScriptService("Basic")
    chart_names = doc.Charts("Sheet1")
    bas.MsgBox(f"There are {len(chart_names)} charts in Sheet1")
  

    chart = doc.Charts("Sheet1", "MyChart")
    bas.MsgBox(chart.ChartType)
  

ClearAll

Efface tous les contenus et formats de la plage donnée.

Une formule de filtre peut être spécifiée pour déterminer quelles cellules seront affectées.

Syntaxe :

svc.ClearAll(range: str, opt filterformula: str, opt filterscope: str)

Paramètres :

plage : la plage à effacer, sous forme de chaîne.

filterformula : une formule Calc qui doit être appliquée à la plage donnée pour déterminer quelles cellules seront affectées. La formule spécifiée doit renvoyer True ou False. Si cet argument n'est pas spécifié, toutes les cellules de la plage sont affectées.

filterscope : détermine comment filterformula est étendu à la plage donnée. Cet argument est obligatoire si filterformula est spécifié. Les valeurs suivantes sont acceptées :

Exemple :

En Basic :

    ' Efface toutes les cellules de la plage SheetX.A1:J10
    oDoc.ClearAll("SheetX.A1:J10")
    ' Efface toutes les cellules de la plage SheetX.A1:J10 qui ont une valeur supérieure à 100
    oDoc.ClearAll("SheetX.A1:J10", "=SheetX.A1>100", "CELL")
    ' Efface toutes les lignes de la plage SheetX.A1:J10 dont la somme est supérieure à 500
    oDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:J1)>100", "ROW")
    ' Efface toutes les colonnes de la plage SheetX.A1:J10 dont la somme est supérieure à 500
    oDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:A10)>100", "COLUMN")
  
En Python

    myDoc.ClearAll("SheetX.A1:F10")
    myDoc.ClearAll("SheetX.A1:J10", "=SheetX.A1>100", "CELL")
    myDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:J1)>100", "ROW")
    myDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:A10)>100", "COLUMN")
  

ClearFormats

Efface les formats et les styles dans la plage donnée.

Une formule de filtre peut être spécifiée pour déterminer quelles cellules seront affectées.

Syntaxe :

svc.ClearFormats(range: str, opt filterformula: str, opt filterscope: str)

Paramètres :

range : la plage dont les formats et les styles doivent être effacés, sous forme de chaîne.

filterformula : une formule Calc qui doit être appliquée à la plage donnée pour déterminer quelles cellules seront affectées. La formule spécifiée doit renvoyer True ou False. Si cet argument n'est pas spécifié, toutes les cellules de la plage sont affectées.

filterscope : détermine comment filterformula est étendu à la plage donnée. Cet argument est obligatoire si filterformula est spécifié. Les valeurs suivantes sont acceptées :

Exemple :

En Basic :

      oDoc.ClearFormats("SheetX.*")
  
En Python

    myDoc.ClearFormats("SheetX.*")
  
tip

Reportez-vous à la documentation de la méthode ClearAll pour des exemples d'utilisation des arguments filterformula et filterscope.


ClearValues

Efface les valeurs et les formules dans la plage donnée.

Une formule de filtre peut être spécifiée pour déterminer quelles cellules seront affectées.

Syntaxe :

svc.ClearValues(range: str, opt filterformula: str, opt filterscope: str)

Paramètres :

plage : la plage dont les valeurs et les formules doivent être effacées, sous forme de chaîne.

filterformula : une formule Calc qui doit être appliquée à la plage donnée pour déterminer quelles cellules seront affectées. La formule spécifiée doit renvoyer True ou False. Si cet argument n'est pas spécifié, toutes les cellules de la plage sont affectées.

filterscope : détermine comment filterformula est étendu à la plage donnée. Cet argument est obligatoire si filterformula est spécifié. Les valeurs suivantes sont acceptées :

Exemple :

En Basic :

      oDoc.ClearValues("SheetX.A1:F10")
  
En Python

    myDoc.ClearValues("SheetX.A1:F10")
  
tip

Reportez-vous à la documentation de la méthode ClearAll pour des exemples d'utilisation des arguments filterformula et filterscope.


CompactLeft

Supprime les colonnes d'une plage spécifiée qui correspondent à un filtre exprimé sous forme de formule Calc. Le filtre est appliqué à chaque colonne pour décider si elle sera supprimée ou non.

La colonne supprimée peut être limitée à la hauteur de la plage spécifiée ou s'étendre à la hauteur de la feuille entière, supprimant ainsi des colonnes entières.

Cette méthode renvoie une chaîne avec l'adresse de plage de la plage compactée. Si toutes les colonnes sont supprimées, une chaîne vide est renvoyée.

note

Si une plage de cellules est sélectionnée, l'appel de cette méthode n'aura pas d'impact sur la sélection.


Syntaxe :

svc.CompactLeft(range: str, wholecolumn: bool = False, opt filterformula: str): str

Paramètres :

range : la plage à partir de laquelle les colonnes seront supprimées, sous forme de chaîne.

wholecolumn : si cette option est définie sur True, la colonne entière sera supprimée de la feuille. La valeur par défaut est False, ce qui signifie que la colonne supprimée sera limitée à la hauteur de la plage spécifiée.

filterformula : le filtre à appliquer à chaque colonne pour déterminer si elle sera supprimée ou non. Le filtre est exprimé sous la forme d'une formule Calc qui doit être appliquée à la première colonne. Lorsque la formule renvoie True pour une colonne, cette colonne sera supprimée. Le filtre par défaut supprime toutes les colonnes vides.

Par exemple, supposons que la plage A1:J200 est sélectionnée (hauteur = 200), la formule par défaut est donc =(COUNTBLANK(A1:A200)=200). Cela signifie que si les 200 cellules sont vides dans la première colonne (colonne A), la colonne est supprimée. Notez que la formule est exprimée par rapport à la première colonne uniquement. En interne, la méthode CompactLeft généralisera cette formule pour toutes les colonnes restantes.

note

Les fonctions Calc utilisées dans l'argument filterformula doivent être exprimées en utilisant leurs noms anglais. Visitez la page Wiki Liste des fonctions Calc pour une liste complète des fonctions Calc en anglais.


Exemple :

En Basic :

    ' Supprimer toutes les colonnes vides dans la plage G1:L10 de Sheet1
    newrange = oDoc.CompactLeft("Sheet1.G1:L10")
    ' L'exemple ci-dessous est similaire, mais toute la colonne est supprimée de la feuille
    newrange = oDoc.CompactLeft("Sheet1.G1:L10", WholeColumn := True)
    ' Supprime toutes les colonnes dont la première ligne est marquée d'un "X"
    newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
    ' Supprime toutes les colonnes où la somme des valeurs de la colonne est impaire
    newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:G10);2)=1)")
  
En Python

    newrange = myDoc.CompactLeft("Sheet1.G1:L10")
    newrange = myDoc.CompactLeft("Sheet1.G1:L10", wholecolumn = True)
    newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(G1="X")')
    newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:G10);2)=1)')
  

CompactUp

Supprime les lignes d'une plage spécifiée qui correspondent à un filtre exprimé sous forme de formule Calc. Le filtre est appliqué à chaque ligne pour décider si elle sera supprimée ou non.

Les lignes supprimées peuvent être limitées à la largeur de la plage spécifiée ou s'étendre à la largeur de la feuille entière, supprimant ainsi des lignes entières.

Cette méthode renvoie une chaîne avec l'adresse de plage de la plage compactée. Si toutes les lignes sont supprimées, une chaîne vide est renvoyée.

note

Si une plage de cellules est sélectionnée, l'appel de cette méthode n'aura pas d'impact sur la sélection.


Syntaxe :

svc.CompactUp(range: str, wholerow: bool = False, opt filterformula: str): str

Paramètres :

plage : la plage à partir de laquelle les lignes seront supprimées, sous forme de chaîne.

wholerow : si cette option est définie sur True, la ligne entière sera supprimée de la feuille. La valeur par défaut est False, ce qui signifie que la ligne supprimée sera limitée à la largeur de la plage spécifiée.

filterformula : Le filtre à appliquer à chaque ligne pour déterminer si elle sera supprimée ou non. Le filtre est exprimé sous la forme d'une formule Calc qui doit être appliquée à la première ligne. Lorsque la formule renvoie True pour une ligne, cette ligne sera supprimée. Le filtre par défaut supprime toutes les lignes vides.

Par exemple, supposons que la plage A1:J200 est sélectionnée (largeur = 10), la formule par défaut est donc =(COUNTBLANK(A1:J1)=10). Cela signifie que si les 10 cellules sont vides dans la première ligne (ligne 1), la ligne est supprimée. Notez que la formule est exprimée par rapport à la première ligne uniquement. En interne, la méthode CompactUp généralisera cette formule pour toutes les lignes restantes.

note

Les fonctions Calc utilisées dans la formule spécifiée dans l'argument filterformula doivent être exprimées en utilisant leurs noms anglais. Visitez la page Wiki Liste des fonctions Calc pour une liste complète des fonctions Calc en anglais.


Exemple :

En Basic :

    ' Supprimer toutes les lignes vides dans la plage G1:L10 de Sheet1
    newrange = oDoc.CompactUp("Sheet1.G1:L10")
    ' L'exemple ci-dessous est similaire, mais la ligne entière est supprimée de la feuille
    newrange = oDoc.CompactUp("Sheet1.G1:L10", WholeRow := True)
    ' Supprime toutes les lignes dont la première colonne est marquée d'un "X"
    newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
    ' Supprime toutes les lignes où la somme des valeurs de la ligne est impaire
    newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:L1);2)=1)")
  
En Python

    newrange = myDoc.CompactUp("Sheet1.G1:L10")
    newrange = myDoc.CompactUp("Sheet1.G1:L10", wholerow = True)
    newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(G1="X")')
    newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:L1);2)=1)')
  

CopySheet

Copie une feuille spécifiée avant une feuille existante ou à la fin de la liste des feuilles. La feuille à copier peut être contenue dans n'importe quel document Calc ouvert. Renvoie True en cas de succès.

Syntaxe :

svc.CopySheet(sheetname: any, newname: str, [beforesheet: any]): bool

Paramètres :

sheetname : Le nom de la feuille à copier sous forme de chaîne ou sa référence en tant qu'objet.

newname : le nom de la feuille à insérer. Le nom ne doit pas être utilisé dans le document.

beforesheet : le nom (chaîne) ou l'index (numérique, à partir de 1) de la feuille avant laquelle insérer la feuille copiée. Cet argument est facultatif et le comportement par défaut consiste à ajouter la feuille copiée à la dernière position.

Exemple :

En Basic :

L'exemple suivant fait une copie de la feuille « SheetX » et la place comme dernière feuille dans le document actuel. Le nom de la feuille copiée est "SheetY".


    Dim oDoc as Object
    'Obtient l'objet Document de la fenêtre active
    Set oDoc = CreateScriptService("Calc")
    oDoc.CopySheet("SheetX", "SheetY")
  

L'exemple ci-dessous copie "SheetS" de "File.ods" et la colle à la dernière position de "FileB.ods" avec le nom "ShettY":


      Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
      Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
      oDocB.CopySheet(oDocA.Sheet("SheetX"), "SheetY")
  
En Python

    myDoc.CopySheet("SheetX", "SheetY")
  

    docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
    docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
    docB.CopySheet(docA.Sheet("SheetX"), "SheetY")
  
tip

Pour copier des feuilles entre des documents ouverts, utilisez CopySheet. Pour copier des feuilles de documents fermés, utilisez CopySheetFromFile.


CopySheetFromFile

Copie une feuille spécifiée d'un document Calc fermé et la colle avant une feuille existante ou à la fin de la liste des feuilles du fichier référencé par un objet Document.

Si le fichier n'existe pas, une erreur est générée. Si le fichier n'est pas un fichier Calc valide, une feuille vierge est insérée. Si la feuille source n'existe pas dans le fichier d'entrée, un message d'erreur est inséré en haut de la feuille nouvellement collée.

Syntaxe :

svc.CopySheetFromFile(filename: str, sheetname: str, newname: str, [beforesheet: any]): bool

Paramètres :

filename : identifie le fichier à ouvrir. Il doit suivre la notation SF_FileSystem.FileNaming. Le fichier ne doit pas être protégé par un mot de passe.

sheetname : le nom de la feuille à copier sous forme de chaîne.

newname : le nom de la feuille copiée à insérer dans le document. Le nom ne doit pas être utilisé dans le document.

beforesheet : Le nom (chaîne) ou l'index (numérique, à partir de 1) de la feuille avant laquelle insérer la feuille copiée. Cet argument est facultatif et le comportement par défaut consiste à ajouter la feuille copiée à la dernière position.

Exemple :

L'exemple suivant copie "SheetX" à partir de "myFile.ods" et la colle dans le document désigné par "oDoc" en tant que "SheetY" à la première position.

En Basic :

    oDoc.CopySheetFromFile("C:\Documents\myFile.ods", "SheetX", "SheetY", 1)
  
En Python

    myDoc.CopySheetFromFile(r"C:\Documents\myFile.ods", "SheetX", "SheetY", 1)
  

CopyToCell

Copie une plage source spécifiée (valeurs, formules et formats) dans une plage ou une cellule de destination. La méthode reproduit le comportement d'une opération Copier/Coller d'une plage à une seule cellule.

Cela renvoie une chaîne représentant la plage de cellules modifiée. La taille de la zone modifiée est entièrement déterminée par la taille de la zone source.

La plage source peut appartenir à un autre document ouvert.

Syntaxe :

svc.CopyToCell(sourcerange: any, destinationcell: str): str

Paramètres :

sourcerange : la plage source sous forme de chaîne lorsqu'elle appartient au même document ou en tant que référence lorsqu'elle appartient à un autre document Calc ouvert.

destinationcell : la cellule de destination dans laquelle la plage de cellules copiée sera collée, sous forme de chaîne. Si une plage est donnée, seule sa cellule en haut à gauche est prise en compte.

Exemple :

En Basic :

Voici un exemple où la source et la destination se trouvent dans le même fichier :


      oDoc.CopyToCell("SheetX.A1:F10", "SheetY.C5")
  

L'exemple ci-dessous illustre comment copier une plage à partir d'un autre document Calc ouvert :


    Dim ui as Variant : ui = CreateScriptService("UI")
    Dim oDocSource As Object, oDocDestination As Object
    'Ouvrir le document source en arrière-plan (masqué)
    Set oDocSource = ui.OpenDocument("C:\SourceFile.ods", Hidden := True, ReadOnly := True)
    Set oDocDestination = CreateScriptService("Calc")
    oDocDestination.CopyToCell(oDocSource.Range("Sheet1.C2:C4"), "SheetT.A5")
    'N'oubliez pas de fermer le document source car il a été ouvert comme masqué
    oDocSource.CloseDocument()
  
En Python

    docSource = ui.OpenDocument(r"C:\Documents\SourceFile.ods", hidden = True, readonly = True)
    docDestination = CreateScriptService("Calc")
    docDestination.CopyToCell(docSource.Range("Sheet1.C2:C4"), "SheetT.A5")
    docSource.CloseDocument()
  
tip

Pour simuler un copier/coller d'une plage vers une seule cellule, utilisez CopyToCell. Pour simuler un copier/coller d'une plage vers une plage plus grande (avec les mêmes cellules répliquées plusieurs fois), utilisez CopyToRange.


CopyToRange

Copie vers le bas et/ou vers la droite une plage source spécifiée (valeurs, formules et formats) vers une plage de destination. La méthode imite le comportement d'une opération Copier/Coller d'une plage source vers une plage de destination plus large.

La méthode renvoie une chaîne représentant la plage de cellules modifiée.

La plage source peut appartenir à un autre document ouvert.

Syntaxe :

svc.CopyToRange(sourcerange: any, destinationrange: str): str

Paramètres :

sourcerange : la plage source sous forme de chaîne lorsqu'elle appartient au même document ou en tant que référence lorsqu'elle appartient à un autre document Calc ouvert.

destinationrange : la destination de la plage de cellules copiée, sous forme de chaîne.

Exemple :

En Basic :

Copier dans le même document :


    oDoc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
    ' Renvoie une chaîne de plage : "$SheetY.$C$5:$J$14"
  

Copier d'un fichier vers un autre :


    Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
    Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
    oDocB.CopyToRange(oDocA.Range("SheetX.A1:F10"), "SheetY.C5:J5")
  
En Python

    doc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
  

    docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
    docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
    docB.CopyToRange(docA.Range("SheetX.A1:F10"), "SheetY.C5:J5")
  

CreateChart

Crée un nouvel objet diagramme affichant les données dans la plage spécifiée. L'objet diagramme renvoyé peut être manipulé davantage à l'aide du service Chart.

Syntaxe :

svc.CreateChart(chartname: str, sheetname: str, range: str, columnheader: bool = False, rowheader: bool = False): obj

Paramètres :

chartname : le nom défini par l'utilisateur du diagramme à créer. Le nom doit être unique dans la même feuille.

sheetname: le nom de la feuille où le diagramme sera placé.

range : La plage à utiliser comme source de données pour le diagramme. La plage peut se référer à n'importe quelle feuille du document Calc.

columnheader : lorsque True, la ligne la plus haute de la plage est utilisée comme étiquettes pour l'axe des catégories ou la légende (par défaut = False).

rowheader : lorsque True, la colonne la plus à gauche de la plage est utilisée comme étiquettes pour l'axe des catégories ou la légende. (par défaut = False).

Exemple :

Les exemples ci-dessous en Basic et Python créent un diagramme à l'aide des données contenues dans la plage "A1:B5" de "Sheet1" et placent le diagramme dans "Sheet2".

En Basic :

    Set oChart = oDoc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", RowHeader := True)
    oChart.ChartType = "Donut"
  
En Python

    chart = doc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", rowheader=True)
    chart.ChartType = "Donut"
  
tip

Reportez-vous à la page d'aide sur le Chart service de ScriptForge pour en savoir plus sur la façon de manipuler davantage les objets diagrammes. Il est possible de modifier les propriétés telles que le type de diagramme, les titres du diagramme et des axes et la position du diagramme.


CreatePivotTable

Crée une nouvelle table dynamique avec les propriétés définies par les arguments passés à la méthode.

Un nom doit être fourni pour la table dynamique. Si une table dynamique portant le même nom existe déjà dans la feuille ciblée, il sera remplacé sans avertissement.

Cette méthode renvoie une chaîne contenant la plage où la nouvelle table dynamique a été placé.

Syntaxe :

svc.CreatePivotTable(pivottablename: str, sourcerange: str, targetcell: str, datafields: str[0..*], rowfields: str[0..*], columnfields: str[0..*], filterbutton: bool = true, rowtotals: bool = true, columntotals: bool = true): str

Paramètres :

pivottablename : Le nom défini par l'utilisateur de la nouvelle table dynamique.

sourcerange : la plage contenant les données brutes, sous forme de chaîne. On suppose que la première ligne contient les noms de champs utilisés par la table dynamique.

cible : la cellule en haut à gauche où la nouvelle table dynamique sera placée. Si une plage est spécifiée, seule sa cellule en haut à gauche est prise en compte.

datafields : il peut s'agir d'une seule chaîne ou d'une matrice contenant des chaînes qui définissent les noms de champ et les fonctions à appliquer. Lorsqu'une matrice est spécifiée, elle doit respecter la syntaxe Array("FieldName[;Function]", ...).

Les fonctions autorisées sont : Sum, Count, Average, Max, Min, Product, CountNums, StDev, StDevP, Var, VarP et Median. Les noms de fonction doivent être fournis en anglais. Lorsque toutes les valeurs sont numériques, Sum est la fonction par défaut, sinon la fonction par défaut est Count.

rowfields : une seule chaîne ou une matrice avec les noms de champs qui seront utilisés comme lignes de la table dynamique.

columnfields : une seule chaîne ou une matrice avec les noms de champs qui seront utilisés comme colonnes de la table dynamique.

filterbutton : détermine si un bouton de filtre sera affiché au-dessus de la table dynamique (par défaut = True).

rowtotals : spécifie si une colonne distincte pour les totaux des lignes sera ajoutée à la table dynamique (par défaut = True).

columntotals spécifie si une ligne distincte pour les totaux des colonnes sera ajoutée à la table dynamique (par défaut = True)

Exemple :

En Basic :

    Dim vData As Variant, oDoc As Object, ui As Object, sTable As String, sPivot As String
    Set ui = CreateScriptService("UI")
    Set oDoc = ui.CreateDocument("Calc")
    vData = Array(Array("Item", "State", "Team", "2002", "2003", "2004"), _
        Array("Books", "Michigan", "Jean", 14788, 30222, 23490), _
        Array("Candy", "Michigan", "Jean", 26388, 15641, 32849), _
        Array("Pens", "Michigan", "Jean", 16569, 32675, 25396), _
        Array("Books", "Michigan", "Volker", 21961, 21242, 29009), _
        Array("Candy", "Michigan", "Volker", 26142, 22407, 32841))
    sTable = oDoc.SetArray("A1", vData)
    sPivot = oDoc.CreatePivotTable("PT1", sTable, "H1", _
        Array("2002", "2003;count", "2004;average"), _ ' Three data fields
        "Item", _ ' Un champ à une seule ligne
        Array("State", "Team"), False) ' Two column fields
  
En Python

    ui = CreateScriptService("UI")
    doc = ui.CreateDocument("Calc")
    vData = [["Item", "State", "Team", "2002", "2003", "2004"],
             ["Books", "Michigan", "Jean", 14788, 30222, 23490],
             ["Candy", "Michigan", "Jean", 26388, 15641, 32849],
             ["Pens", "Michigan", "Jean", 16569, 32675, 25396)],
             ["Books", "Michigan", "Volker", 21961, 21242, 29009],
             ["Candy", "Michigan", "Volker", 26142, 22407, 32841]]
    sTable = doc.SetArray("A1", vData)
    sPivot = doc.CreatePivotTable("PT1", sTable, "H1",
                                  ["2002", "2003;count", "2004;average"],
                                  "Item",
                                  ["State", "Team"], False)
  
tip

Pour en savoir plus sur les tables dynamiques dans LibreOffice Calc, consultez la page d'aide du Table dynamique.


DAvg, DCount, DMax, DMin and DSum

Appliquez respectivement les fonctions Moyenne, Compte, Max, Min et Somme à toutes les cellules contenant des valeurs numériques sur une plage donnée, à l'exclusion des valeurs des lignes filtrées et masquées et des colonnes masquées, comme pour les fonctions de la barre d'état.

Syntaxe :

svc.DAvg(range: str): float

svc.DCount(range: str): float

svc.DMax(range: str): float

svc.DMin(range: str): float

svc.DSum(range: str): float

Paramètres :

range : la plage à laquelle la fonction sera appliquée, sous forme de chaîne.

Exemple :

L'exemple ci-dessous applique la fonction Sum à la plage "A1:A1000" de la feuille actuellement sélectionnée :

En Basic :

      result = oDoc.DSum("~.A1:A1000")
  
En Python

    result = myDoc.DSum("~.A1:A1000")
  
note

Les cellules de la plage do