Je ne sais pas si ça peut aider quelqu'un, mais je viens de trouver _grosso modo_ comment faire des calculs dans des tableaux externes avec [Org-mode](https://orgmode.org) :
N'hésitez pas à regarder d'abord l'image, le texte ci-dessous la décrit.Un tableau à 6 colonnes : de gauche à droite, « dépenses », « _timestamp_ », « mots-clés », « quantité », « prix unitaire », et « prix total ».
Ce tableau est surmonté de l'attribut suivant :
#+NAME: DÉPENSESIl n'y a pas de ligne de séparation entre cette entrée et le tableau, afin de donner ce nom au tableau et donc de pouvoir le référencer plus bas.
Verticalement le tableau a la structure suivante : la ligne des titres des colonnes, une ligne de séparation (« _hline_ »), la ligne du budget initial, la ligne qui correspond à la soustraction du loyer, une autre hline, et enfin chaque dépense unitaire. Il y a donc trois sections verticales, séparées par deux hlines internes.
Dans ce tableau, le prix total est calculé de la façon suivante :
$>=$>>>*$>> (chaque dernière colonne vaut l'avant-avant-dernière colonne multipliée par l'avant-dernière colonne).Je calcule aussi mon budget pour le mois en soustrayant mon loyer du budget initial, grâce à la formule
@3$>=@2$>-660 (mon loyer a la valeur fixe de 660€ par mois). Les hlines ne comptent pas dans le calcul des positions, mais les lignes ne contenant que du texte sont quand même considérées comme des « lignes de données » et comptent donc dans le calcul. Ainsi, @3$> correspond à la dernière colonne de la troisième ligne, et contient la dernière colonne de la deuxième ligne (mon budget initial) moins 660€ par mois. La cellule @1$> contient la valeur « prix total ».La formule pour ce tableau est donc :
#+TBLFM: $>=$>>>*$>>::@3$>=@2$>-660.Je mets le budget me restant pour le mois dans un plus petit tableau à deux colonnes, plus facilement lisible :
| Budget restant | (Calcul) |. Il est encadré verticalement de deux hlines à des fins esthétiques, mais ce n'est pas nécessaire.Le calcul peut être lu directement dans la ligne directement sous le tableau :
#+TBLFM: $2=remote(DÉPENSES, @3$>)-vsum(remote(DÉPENSES, @II$>..@III$>)).La deuxième colonne du tableau (il n'a que deux cellules) vaut ainsi
remote(DÉPENSES, @3$>)-vsum(remote(DÉPENSES, @II$>..@III$>)), selon la syntaxe remote(NOM, FORMULE). Je n'étais pas sûre mais il suffit d'indiquer le champ à calculer dans une seule formule remote, dans une formule vsum.
