Partager via


Utilisation des formules

Cette rubrique décrit la classe CellFormula du Kit de développement logiciel (SDK) Open XML et sa relation avec le schéma SpreadsheetML au format de fichier Open XML. Pour en savoir plus sur la structure globale des composants et des éléments qui composent un document SpreadsheetML, consultez Structure d’un document SpreadsheetML (Kit de développement logiciel Open XML).


Formules dans SpreadsheetML

Vous pouvez utiliser des formules pour créer des modèles calculatoires. Les formules permettent le calcul automatique de valeurs en fonction de données à l’intérieur ou l’extérieur du classeur ou du résultat d’autres cellules calculées dans le classeur.

Les formules sont stockées à l’intérieur de chaque cellule utilisant une formule, dans le fichier XML de feuille de calcul. Utilisez l’élément CellFormula (<f>) pour définir le texte de la formule. Les formules peuvent contenir des expressions mathématiques qui incluent une grande variété de fonctions prédéfinies.

L’élément CellValue (<v>) stocke la valeur de formule mise en cache en fonction de la dernière fois que la formule a été calculée. Cela permet à l’utilisateur de différer le calcul des valeurs de formules à l’ouverture du classeur, ce qui optimise le temps d’ouverture d’une feuille de calcul. Vous n’êtes pas obligé de spécifier la valeur, et si vous omettez de le faire, le lecteur Open XML sera chargé de calculer la valeur basée sur la définition de la formule à l’ouverture de la feuille de calcul. Pour plus d’informations sur la classe CellValue , consultez CellValue.

Les informations suivantes de la spécification ISO/IEC 29500 introduisent l’élément cellFormula (<f>).

Une formule SpreadsheetML est la représentation syntaxique d’une série de calculs qui est analysée ou interprétée par le tableur dans une fonction qui calcule une valeur ou un tableau de valeurs en fonction de zéro à de nombreuses entrées.

Une formule est une expression qui peut contenir des constantes, des opérateurs, des références à des cellules, des appels à des fonctions, et des noms.

Exemple : prenons la formule PI()*(A2^2). Dans ce cas,

  • PI() provoque un appel à la fonction PI, qui renvoie la valeur de π. - La référence de cellule A2 retourne la valeur de cette cellule. - 2 est une constante numérique. - L’opérateur caret (^) élève son opérande gauche à la puissance de son opérande droit. - Les parenthèses ( et ) sont utilisées pour le regroupement. - L’opérateur astérisque (*) effectue la multiplication de ses deux opérandes.

Un opérateur est un symbole qui spécifie le type d’opération à effectuer sur un ou plusieurs opérandes. Il y a des opérateurs arithmétiques, ainsi que des opérateurs de comparaison, de texte et de référence.

Chaque ensemble horizontal de cellules dans une feuille de calcul est une ligne, et chaque ensemble vertical de cellules, une colonne. La combinaison de la ligne et de la colonne d’une cellule désigne l’emplacement de celle-ci.

Une référence de cellule peut désigner une ou plusieurs cellules sur la même feuille de calcul. À l’aide de références, on peut : - Utiliser des données contenues dans différentes parties de la même feuille de calcul dans une seule formule. - Utilisez la valeur d’une seule cellule dans plusieurs formules. - Faire référence à des cellules sur d’autres feuilles du même classeur, et même à d’autres classeurs. (Les références à des cellules dans d’autres classeurs sont appelées liens.)

Une fonction est une formule nommée acceptant zéro à plusieurs arguments, qui effectue une opération, et renvoie éventuellement un résultat. Voici quelques exemples d’appels de fonction : PI(), POWER(A1,B3) et SUM(C6:C10).

Il existe plus de 300 fonctions prédéfinies dans les spécifications Office Open XML actuelles. Les fonctions définies par l’utilisateur sont également autorisées.

Un nom est un alias pour une constante, une référence de cellule ou une formule. Un nom dans une formule peut faciliter la compréhension du but de celle-ci. Par exemple, la formule SUM(VentesPremierTrimestre) est plus facile à identifier que SUM(C20:C30).

Chaque expression a un type. Les formules SpreadsheetML prennent en charge les types suivants : tableau, erreur, logique, numérique et texte.

Une valeur ou une constante de tableau représente une collection d’un ou plusieurs éléments, dont les valeurs peuvent avoir tout type (les éléments d’un tableau n’ont pas obligatoirement le même type).

© ISO/IEC29500: 2008.

Pour plus d’informations sur la syntaxe des formules, voir les spécifications ISO/IEC 29500.

Exemple de document SpreadsheetML

Cet exemple montre le code XML pour un fichier qui contient une formule, la fonction SUM, dans la cellule A6 de la feuille Sheet1. Le code XML suivant définit la feuille de calcul ; il est contenu dans le fichier sheet1.xml.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="https://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
        <dimension ref="A1:A6"/>
        <sheetViews>
            <sheetView tabSelected="1" workbookViewId="0">
                <selection activeCell="A7" sqref="A7"/>
            </sheetView>
        </sheetViews>
        <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
        <sheetData>
            <row r="1" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A1">
                    <v>1</v>
                </c>
            </row>
            <row r="2" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A2">
                    <v>2</v>
                </c>
            </row>
            <row r="3" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A3">
                    <v>3</v>
                </c>
            </row>
            <row r="4" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A4">
                    <v>4</v>
                </c>
            </row>
            <row r="5" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A5">
                    <v>5</v>
                </c>
            </row>
            <row r="6" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A6">
                    <f>SUM(A1:A5)</f>
                    <v>15</v>
                </c>
            </row>
        </sheetData>
        <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
    </worksheet>