====== Tableaux avec formules de calcul ======
Le module [[doku>plugin:tablecalc|TableCalc]] permet de réaliser des calculs dans un tableau du wiki.\\
Il est donc possible de réaliser des feuilles de calcul simples pour estimer une trésorerie, évaluer des éléments de rémunération, calculer le coût d'un crédit, etc.
===== Nommer un tableau =====
Il est possible de nommer un tableau si l'on souhaite utiliser ses données dans la page en cours.
Voici le tableau1
|~~=label(tableau1)~~1|2|3|
|2|4|6|
|3|6|9|
Et le code correspondant
|~~=label(tableau1)~~1|2|3|
|2|4|6|
|3|6|9|
Dans cet exemple, on insère la formule :
~~=label(tableau1)~~
dans la première cellule du tableau pour le nommer **tableau1**.\\
Attention à utiliser uniquement des lettres minuscules et aucun espace.
Il est alors possible d'afficher le contenu de la dernière cellule du tableau1.
Comme cela :
Chiffre dans la dernière cellule : ~~=tableau1.c2r2~~
Et le code correspondant
Chiffre dans la dernière cellule : ~~=tableau1.c2r2~~
===== Accès aux cellules =====
Les cellules sont indexées à partir de la ligne 0 et de la colonne 0.\\
Dans l'exemple précédent c2r2 ((**c** comme column, **r** comme row))correspond à la dernière cellule du tableau.
Il est possible d'échanger ligne et colonne, r2c2 et c2r2 représentent la même cellule.
Voici une copie du tableau1
|~~=tableau1.c0r0~~|~~=tableau1.c1r0~~|~~=tableau1.c2r0~~|
|~~=tableau1.c0r1~~|~~=tableau1.c1r1~~|~~=tableau1.c2r1~~|
|~~=tableau1.c0r2~~|~~=tableau1.c1r2~~|~~=tableau1.c2r2~~|
Et le code correspondant
|~~=tableau1.c0r0~~|~~=tableau1.c1r0~~|~~=tableau1.c2r0~~|
|~~=tableau1.c0r1~~|~~=tableau1.c1r1~~|~~=tableau1.c2r1~~|
|~~=tableau1.c0r2~~|~~=tableau1.c1r2~~|~~=tableau1.c2r2~~|
Important, si en modification du chapitre vous faites un aperçu, le **tableau1** est inaccessible donc vide. Mais tout rentre dans l'ordre si vous affichez toute la page.
===== Plage de cellules =====
Il est possible de référencer plusieurs cellule dans une seule expression.
Voici la deuxième ligne du tableau
~~=tableau1.r1c0:r1c2~~
Et le code correspondant
~~=tableau1.r1c0:r1c2~~
Voici les premières et troisième lignes du tableau
~~=tableau1.r0c0:r0c2,tableau1.r2c0:r2c2~~
Et le code correspondant
~~=tableau1.r0c0:r0c2,tableau1.r2c0:r2c2~~
Attention à ne pas référencer des cellules qui n'existent pas (cela peut fonctionner mais n'est pas recommandé)
Les plages de cellule sont utiles pour les fonctions d'agrégations.
===== Opérateurs =====
==== Addition (et concaténation) ====
^ a ^ b ^ Opérateur ^ Équation ^ Résultat ^
| 7 | 3 | + | %%~~= c0r1 + c1r1 ~~%% | ~~= c0r1 + c1r1 ~~ |
| Ta | tie | + | %%~~= c0r2 + c1r2 ~~%% | ~~= c0r2 + c1r2 ~~ |
La concaténation fonctionne aléatoirement
==== Soustraction ====
^ a ^ b ^ Operateur ^ Equation ^ Resultat ^
| 7 | 3 | - | %%~~= c0r1 - c1r1 ~~%% | ~~= c0r1 - c1r1 ~~ |
| Ta | tie | - | %%~~= c0r2 - c1r2 ~~%% | ~~= c0r2 - c1r2 ~~ |
==== Multiplication ====
^ a ^ b ^ Operateur ^ Equation ^ Resultat ^
| 7 | 3 | * | %%~~= c0r1 * c1r1 ~~%% | ~~= c0r1 * c1r1 ~~ |
| Ta | tie | * | %%~~= c0r2 * c1r2 ~~%% | ~~= c0r2 * c1r2 ~~ |
==== Division ====
^ a ^ b ^ Operateur ^ Equation ^ Resultat ^
| 7 | 3 | / | %%~~= c0r1 / c1r1 ~~%% | ~~= c0r1 / c1r1 ~~ |
| Ta | tie | / | %%~~= c0r2 / c1r2 ~~%% | ~~= c0r2 / c1r2 ~~ |
==== Reste de la division ====
^ a ^ b ^ Operateur ^ Equation ^ Resultat ^
| 7 | 3 | % | %%~~= c0r1 % c1r1 ~~%% | ~~= c0r1 % c1r1 ~~ |
| Ta | tie | % | %%~~= c0r2 % c1r2 ~~%% | ~~= c0r2 % c1r2 ~~ |
==== Et logique ====
^ a ^ b ^ Operateur ^ Equation ^ Resultat ^
| 7 | 3 | & | %%~~= c0r1 & c1r1 ~~%% | ~~= c0r1 & c1r1 ~~ |
| Ta | tie | & | %%~~= c0r2 & c1r2 ~~%% | ~~= c0r2 & c1r2 ~~ |
| 0 | 1 | & | %%~~= c0r3 & c1r3 ~~%% | ~~= c0r3 & c1r3 ~~ |
| 1 | 1 | & | %%~~= c0r4 & c1r4 ~~%% | ~~= c0r4 & c1r4 ~~ |
===== Fonctions =====
^ Fonction ^ Description ^
| label(chaîne) | Donne un nom au tableau |
| row() | ligne courante |
| col() | colonne courante |
| cell(x,y)((''x'' = numéro de colonne, ''y'' = numéro de ligne.)) | Valeur numérique de la cellule (utilisée avec les fonctions col et row) |
| range(x1,y1,x2,y2) | plage de cellules (utilisée avec les fonctions col et row) |
| sum(plage) | Somme des valeurs numériques de la plage |
| count(plage) | Nombre d'éléments (cellules) dans la plage |
| average(plage) | Moyenne de la plage spécifiée |
| min(plage) | Minimum de la plage spécifiée |
| max(plage) | Maximum de la plage spécifiée |
| round(nombre;décimales) | Nombre arrondi aux décimales spécifiées |
| check(condition;si vrai;si faux) | Affiche les instructions ''si vrai'', si la ''condition'' n'est pas nulle |
| compare(a;b;opération) | Compare ''a'' et ''b'' suivant l'''opération'' demandée, renvoie zéro si l'opération n'est pas satisfaite |
| countif(plage;valeur;opération) | Compte les valeurs comparables à la ''valeur'' suivant l' ''opération'' dans la ''plage'' spécifiée |
Dans les fonctions il est préférable d'utiliser le '';'' comme séparateur.
==== Somme et comptage de cellules ====
=== Tout le tableau ===
{{tablelayout?rowsHeaderSource=Auto}}
| 1 | 2 |
| 3 | 4 |
^ Somme ^ ~~=sum(c0r0:c1r1)~~ ^
^ Nombre ^ ~~=count(c0r0:c1r1)~~ ^
| 1 | 2 |
| 3 | 4 |
^ Somme ^ ~~=sum(c0r0:c1r1)~~ ^
^ Nombre ^ ~~=count(c0r0:c1r1)~~ ^
=== Une partie du tableau ===
^ 1 ^ 2 | 3 ^ 4 ^
^ 5 ^ 6 | 7 ^ 8 ^
^ Somme ^ ~~=sum(r0c0:r1c1,r0c3:r1c3)~~ |||
^ Nombre ^ ~~=count(r0c0:r1c1,r0c3:r1c3)~~ |||
^ 1 ^ 2 | 3 ^ 4 ^
^ 5 ^ 6 | 7 ^ 8 ^
^ Somme | ~~=sum(r0c0:r1c1,r0c3:r1c3)~~ |||
^ Nombre | ~~=count(r0c0:r1c1,r0c3:r1c3)~~ |||
=== Sommes intermédiaires ===
| | 1 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 2 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 3 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 4 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 5.66 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 6 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 7 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 8 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 9 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 10 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| Somme | ~~=sum(range(col(),0,col(),row()-1))~~ ^ ^
| Nombre | ~~=count(range(col(),0,col(),row()-1))~~ ^ ::: ^
| | 1 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 2 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 3 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 4 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 5.66 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 6 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 7 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 8 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 9 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| | 10 | ~~=sum(range(col()-1,0,col()-1,row()))~~ |
| Somme | ~~=sum(range(col(),0,col(),row()-1))~~ ^ ^
| Nombre | ~~=count(range(col(),0,col(),row()-1))~~ ^ ::: ^
==== Moyenne ====
| | 1 |
| | 2 |
| | 3 |
| | 4 |
| | 5 |
| | 6 |
| | 7 |
| | 8 |
| | 9 |
^ Moyenne ^ ~~=average(range(col();0;col();row()-1))~~ ^
|1|
|2|
|3|
|4|
|5|
|6|
|7|
|8|
|9|
|~~=average(range(col(),0,col(),row()-1))~~|
==== Minimum et maximum ====
^ Minimum ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 1 | 4 | 7 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 2 | 5 | 8 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 3 | 6 | 9 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ Maximum ^
^ Minimum ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=min(range(col();row()-1;col();row()+2))~~ ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 1 | 4 | 7 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 2 | 5 | 8 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ | 3 | 6 | 9 ^ ~~=max(range(col()-3;row();col()-1;row()))~~ ^
^ ~~=min(range(col()+1;row();col()+3;row()))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ ~~=max(range(col();row()-3;col();row()-1))~~ ^ Maximum ^
==== Test logique ====
| 1 | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| 0 | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| x | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| **** | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| 1 | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| 0 | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| x | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
| **** | ~~=check(cell(0,row()),#Vrai,#Faux)~~ |
==== Comparaison de cellules et comptage conditionel====
| 1 | 2 | 1=2 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#Vrai,#Faux)~~ |
| 3 | 3 | 3=3 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#Vrai,#Faux)~~ |
| 4 | 5 | 4<5 | ~~=check(compare(cell(0,row()),cell(1,row()),#<),#Vrai,#Faux)~~ |
| 6 | 7 | 6>7 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#Vrai,#Faux)~~ |
| 8 | 9 | 8>9 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#Vrai,#Faux)~~ |
| 10 | 10 | 10≥10 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#Vrai,#Faux)~~ |
| 11 | 11 | 11≤11 | ~~=check(compare(cell(0,row()),cell(1,row()),#<=),#Vrai,#Faux)~~ |
| 12 | 12 | 12≠12 | ~~=check(compare(cell(0,row()),cell(1,row()),#<>),#Vrai,#Faux)~~ |
^ Totaux ||||
^ Vrai | ~~=countif(r0c3:r7c0,#Vrai,#=)~~ ^ Faux | ~~=countif(r0c3:r7c0,#Faux,#=)~~ |
| 1 | 2 | 1=2 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#Vrai,#Faux)~~ |
| 3 | 3 | 3=3 | ~~=check(compare(cell(0,row()),cell(1,row()),#=),#Vrai,#Faux)~~ |
| 4 | 5 | 4<5 | ~~=check(compare(cell(0,row()),cell(1,row()),#<),#Vrai,#Faux)~~ |
| 6 | 7 | 6>7 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#Vrai,#Faux)~~ |
| 8 | 9 | 8>9 | ~~=check(compare(cell(0,row()),cell(1,row()),#>),#Vrai,#Faux)~~ |
| 10 | 10 | 10≥10 | ~~=check(compare(cell(0,row()),cell(1,row()),#>=),#Vrai,#Faux)~~ |
| 11 | 11 | 11≤11 | ~~=check(compare(cell(0,row()),cell(1,row()),#<=),#Vrai,#Faux)~~ |
| 12 | 12 | 12≠12 | ~~=check(compare(cell(0,row()),cell(1,row()),#<>),#Vrai,#Faux)~~ |
^ Totaux ||||
^ Vrai | ~~=countif(r0c3:r7c0,#Vrai,#=)~~ ^ Faux | ~~=countif(r0c3:r7c0,#Faux,#=)~~ |
++++ Voir la liste des pages de ce dossier |
++++
Retour [[.sommaire]]