En Communs

Réflexions et Actions Communes

Outils pour utilisateurs

Outils du site


wiki:logiciels:dokuwiki:tableau_avec_formules_de_calcul

Tableaux avec formules de calcul

Le module 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

123
246
369

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 :

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 1)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

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

Et le code correspondant

~~=tableau1.r1c0:r1c2~~

Voici les premières et troisième lignes du tableau

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 ~~
Ta tie + ~~= c0r2 + c1r2 ~~

La concaténation fonctionne aléatoirement

Soustraction

a b Operateur Equation Resultat
7 3 - ~~= c0r1 - c1r1 ~~
Ta tie - ~~= c0r2 - c1r2 ~~

Multiplication

a b Operateur Equation Resultat
7 3 * ~~= c0r1 * c1r1 ~~
Ta tie * ~~= c0r2 * c1r2 ~~

Division

a b Operateur Equation Resultat
7 3 / ~~= c0r1 / c1r1 ~~
Ta tie / ~~= c0r2 / c1r2 ~~

Reste de la division

a b Operateur Equation Resultat
7 3 % ~~= c0r1 % c1r1 ~~
Ta tie % ~~= c0r2 % c1r2 ~~

Et logique

a b Operateur Equation Resultat
7 3 & ~~= c0r1 & c1r1 ~~
Ta tie & ~~= c0r2 & c1r2 ~~
0 1 & ~~= c0r3 & c1r3 ~~
1 1 & ~~= c0r4 & c1r4 ~~

Fonctions

Fonction Description
label(chaîne) Donne un nom au tableau
row() ligne courante
col() colonne courante
cell(x,y)2) 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

1 2
3 4
Somme
Nombre
tableau.txt
| 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
Nombre
tableau.txt
^ 1       ^ 2                                | 3  ^ 4  ^
^ 5       ^ 6                                | 7  ^ 8  ^
^   Somme | ~~=sum(r0c0:r1c1,r0c3:r1c3)~~            |||
^  Nombre | ~~=count(r0c0:r1c1,r0c3:r1c3)~~          |||

Sommes intermédiaires

1
2
3
4
5.66
6
7
8
9
10
Somme
Nombre
tableau.txt
|         | 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
tableau.txt
|1|
|2|
|3|   
|4|   
|5|
|6|
|7|   
|8|   
|9|    
|~~=average(range(col(),0,col(),row()-1))~~|

Minimum et maximum

Minimum
1 4 7
2 5 8
3 6 9
Maximum
tableau.txt
^ 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
0
x
tableau.txt
| 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
3 3 3=3
4 5 4<5
6 7 6>7
8 9 8>9
10 10 10≥10
11 11 11≤11
12 12 12≠12
Totaux
Vrai Faux
tableau.txt
| 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)
c comme column, r comme row
2)
x = numéro de colonne, y = numéro de ligne.
wiki/logiciels/dokuwiki/tableau_avec_formules_de_calcul.txt · Dernière modification: 2019/11/19 13:45 (modification externe)