{{tag>Logiciel}} ====== tablecalc : faire des calculs dans une table comme avec Excel ====== Parfois, on peut avoir besoin de faire des calculs simples dans la table DokuWiki. À l'aide de ce plugin, vous pourrez insérer des formules de style Excel dans le tableau ===== Pré-requis ===== ===== Installation ===== Recherchez et installez le plugin **tablecalc** à l'aide du gestionnaire d'extensions. [[http://narezka.org/cfd/msgdb/740/tablecalc.zip]] ===== Configuration ===== ===== Utilisation ===== ==== Syntaxe ==== Pour effectuer un calcul, insérez une formule de style XL dans la feuille de calcul. Toute expression doit commencer par **%%~~=%%** et se terminer par **%%~~%%**. Vous pouvez spécifier * directement une plage (comme le fait XL) * ou utiliser une fonction **range()** La plage consiste en une référence à la cellule de départ et à la cellule d'arrivée, comme ceci :r0c4 Notez que les index de ligne %%(r)%% et de colonne %%(c)%% commencent à partir de zéro %%(0)%% ^ ^ 0 ^ 1 ^ 2 ^ ^ 0 | r0c0 | r0c1 | r0c2 | ^ 1 | r1c0 | r1c1 | r1c2 | ^ 2 | r2c0 | r2c1 | r2c2 | Les préfixes de ligne et de colonne peuvent être permutés. Ceci est équivalent à ce qui précède :c4r0 Vous pouvez également faire référence à plusieurs cellules dans une plage :|r0c0:r1c1|| De plus, vous pouvez utiliser plusieurs plages :r0c0:r1c1,r0c3:r1c4 Il est recommandé de ne pas utiliser de références pour des cellules inexistantes. Par exemple, ce n'est pas correct (bien que cela fonctionnera, renvoyant « 3 ») :| 1 | | 2 | | ~~=sum(r0c0:r99c99)~~ | Utilisez plutôt des constructions comme celle-ci :| 1 | | 2 | | ~~=sum(range(0,0,col(),row()-1))~~ | ==== Fonctions ==== The following functions are implemented: ^ Func ^ Description ^ ^ average(range) | Renvoie la moyenne de la plage spécifiée | ^ cell(column,row) | Renvoie la valeur numérique de la cellule (colonne, ligne) | ^ check(condition;true;false) | Exécute l'instruction true, si la condition n'est pas zéro | ^ col() | Retourne la colonne courante | ^ compare(a;b;operation) | Comparaison mathématique entre a et b. Renvoie zéro lorsque les conditions de l'opération ne sont pas remplies | ^ count(range) | Renvoie le nombre d'éléments dans la plage spécifiée | ^ countif(range;b;operation) | Compter les valeurs dans la plage qui correspondent à la comparaison avec b. Le type de comparaison est spécifié en opération | ^ label(string) | Lie l'étiquette à la table | ^ max(range) | Renvoie la valeur maximale dans la plage spécifiée | ^ min(range) | Renvoie la valeur minimale dans la plage spécifiée | ^ range(column1,row1,column2,row2) | Renvoie la plage interne pour d'autres fonctions | ^ round(number;decimals) | Renvoie le nombre, arrondi aux décimales spécifiées | ^ row() | Retourne la ligne courante | ^ sum(range) | Renvoie la somme de la plage spécifiée | ^ calc() | Obsolète, désormais inutile | Bien que vous puissiez utiliser deux points comme délimiteur dans les fonctions, le point-virgule est préférable et recommandé. ==== Opérateurs ==== La plupart des opérateurs arithmétiques Javascript standard sont pris en charge, mais certains (( ^ | ~)) sont en conflit avec le balisage de la table, les opérateurs suivants sont donc disponibles : ^ Opérateur ^ Description ^ ^ + | Addition et plus unaire | ^ - | Soustraction et unaire négatif | ^ * | Multiplication | ^ / | Division | ^ % | Modulo (reste de division) | ^ & | ET logique | ^ << | Décaler à gauche | ^ >> | Décaler à droite | ==== Exemples ==== === 1er exemple === | 1 | 2 | ~~=r0c0+r0c1~~ | ~~=10.2+1.5~~ | | 1 | 2 | ~~=r0c0+r0c1~~ | ~~=10.2+1.5~~ | === 2e exemple === | 1 | 2 | | 3 | 4 | | ~~=sum(r0c0:r1c1)~~ || | 1 | 2 | | 3 | 4 | | ~~=sum(r0c0:r1c1)~~ || === 3e exemple === | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | | **~~=sum(r0c0:r1c1,r0c3:r1c4)~~** |||| | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | | **~~=sum(r0c0:r1c1,r0c3:r1c4)~~** |||| === 4e exemple === |1| |2| |3| |4| |5.74| |6| |7| |8| |9| |10| |11| |~~=sum(range(col(),0,col(),row()-1))~~| |1| |2| |3| |4| |5.74| |6| |7| |8| |9| |10| |11| |~~=sum(range(col(),0,col(),row()-1))~~| === V === |1| |2| |3| |4| |5| |6| |7| |8| |9| |11| |~~=average(range(col(),0,col(),row()-1))~~| |1| |2| |3| |4| |5| |6| |7| |8| |9| |11| |~~=average(range(col(),0,col(),row()-1))~~| === 6e exemple === | ~~=label(ex6_1)~~1 | 2 | | 3 | 4 | Sum: **~~=sum(ex6_1.c0r0:c99r99)~~** | ~~=label(ex6_1)~~1 | 2 | | 3 | 4 | Sum: **~~=sum(ex6_1.c0r0:c99r99)~~** === 7e exemple === | **~~=label(ex7_1)~~11** | ~~=sum(ex7_2.c0r0:c99r99)~~ | | 13 | 14 | | ~~=label(ex7_2)~~1 | 2 | | 3 | 4 | Somme : **~~=sum(ex7_1.c0r0:c1r1)~~** | **~~=label(ex7_1)~~11** | ~~=sum(ex7_2.c0r0:c99r99)~~ | | 13 | 14 | | ~~=label(ex7_2)~~1 | 2 | | 3 | 4 | Somme : **~~=sum(ex7_1.c0r0:c1r1)~~** === 8e exemple === | **~~=min(c0r1:c0r3)~~** | **~~=max(c1r1:c1r3)~~** | | 1 | 7 | | 2 | 8 | | 3 | 9 | | **~~=min(c0r1:c0r3)~~** | **~~=max(c1r1:c1r3)~~** | | 1 | 7 | | 2 | 8 | | 3 | 9 | === 9e exemple === | 1 | ~~=check(cell(0,row()),#True,#False)~~ | | 0 | ~~=check(cell(0,row()),#True,#False)~~ | | x | ~~=check(cell(0,row()),#True,#False)~~ | | | ~~=check(cell(0,row()),#True,#False)~~ | | **** | ~~=check(cell(0,row()),#True,#False)~~ | | 1 | ~~=check(cell(0,row()),#True,#False)~~ | | 0 | ~~=check(cell(0,row()),#True,#False)~~ | | x | ~~=check(cell(0,row()),#True,#False)~~ | | | ~~=check(cell(0,row()),#True,#False)~~ | | **** | ~~=check(cell(0,row()),#True,#False)~~ | === 10e exemple === | 1 | 2 | 1=2 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#True,#False)~~ | | 3 | 3 | 3=3 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#True,#False)~~ | | 4 | 5 | 4<5 | ~~=check(compare(cell(0,row()),cell(1,row()),#<),#True,#False)~~ | | 6 | 7 | 6>7 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#True,#False)~~ | | 8 | 9 | 8>9 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#True,#False)~~ | | 10 | 10 | 10≥10 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#True,#False)~~ | | 11 | 11 | 11≤11 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#True,#False)~~ | | 12 | 12 | 12≠12 | ~~=check(compare(cell(0,row()),cell(1,row()),#!=),#True,#False)~~ | | 1 | 2 | 1=2 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#True,#False)~~ | | 3 | 3 | 3=3 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#True,#False)~~ | | 4 | 5 | 4<5 | ~~=check(compare(cell(0,row()),cell(1,row()),#<),#True,#False)~~ | | 6 | 7 | 6>7 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#True,#False)~~ | | 8 | 9 | 8>9 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#True,#False)~~ | | 10 | 10 | 10≥10 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#True,#False)~~ | | 11 | 11 | 11≤11 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#True,#False)~~ | | 12 | 12 | 12≠12 | ~~=check(compare(cell(0,row()),cell(1,row()),#!=),#True,#False)~~ | === 11e exemple === ^ Operator ^ Equation ^ Result ^ | + | %%~~= 3 + 2 ~~%% | 5 | | - | %%~~= 3 - 2 ~~%% | 1 | | * | %%~~= 3 * 2 ~~%% | 6 | | / | %%~~= 6 / 2 ~~%% | 3 | | % | %%~~= 7 % 2 ~~%% | 1 | | unary + | %%~~= +2 ~~%% | 2 | | unary - | %%~~= -2 ~~%% | -2 | | & | %%~~= 3 & 2 ~~%% | 2 | | %%<<%% | %%~~= 2 << 7 ~~%% | 256 | | %%>>%% | %%~~= 8 >> 2 ~~%% | 2 | === 12e exemple === |~~=r0c1+5~~|6| |~~=r0c1+5~~|6| === 13e exemple === | ~~=label(ex13_1)~~pommes | 32 | | oranges | 54 | | pêches | 75 | | pommes | 86 | Pommes: ~~=countif(ex13_1.r0c0:r9c0,#pommes,#=)~~ | ~~=label(ex13_1)~~pommes | 32 | | oranges | 54 | | pêches | 75 | | pommes | 86 | Pommes: ~~=countif(ex13_1.r0c0:r9c0,#pommes,#=)~~ ===== Désinstallation ===== ===== Voir aussi ===== * **(en)** [[https://www.dokuwiki.org/plugin:tablecalc]] ---- //Basé sur << [[https://www.dokuwiki.org/plugin:tablecalc|Article]] >> par dokuwiki.org.//