[Calc] Utilisation de variable dans une formule

Bonjour,

Pour simplifier l'écriture de formules dans les cellules d'un tableur Calc,
je voudrais utiliser une variable mais je ne sais pas comment séparer les 2
opérations (initialisation de la variable puis réalisation du calcul avec
celle-ci).

Voici un exemple. J'ai dans une cellule la formule suivante :

=IF(($'Sheet1'.A3+$'Sheet1'.A4)<>0;$'Sheet1'.A3+$'Sheet1'.A4;"N/A")

qui affiche le résultat de la somme $'Sheet1'.A3+$'Sheet1'.A4 si elle est
différente de 0, qui affiche "N/A" sinon.

Je veux dans cette formule remplacer $'Sheet1'.A3+$'Sheet1'.A4 par la
variable VAR. J'écris alors dans la cellule la formule suivante :

=(VAR=$'Sheet1'.A3+$'Sheet1'.A4;IF(VAR<>0;VAR;"N/A"))

mais ça ne marche pas, j'obtiens l'erreur #NAME?

Je pense que le problème vient du séparateur des 2 opérations : j'ai mis
dans l'exemple un ; mais ça doit être faux.

Quelqu'un connait la solution svp ?

Cordialement,
Arnaud

Bonjour,

je ne connais pas cette notion de variable en calc.
il existe une manière de nommer des cellules mais pas à ma connaissance de
nom de variable.

dans ton exemple, je vois pas tellement l'utilité de remplacer par une
variable si ce n'est allonger la formule... :-/
Mais peut-être que je me trompe si j'ai pas bien compris :wink:

Yves

Bonjour

Vous prenez Calc pour un langage algorithmique qu'il n'est pas, sauf à utiliser spécifiquement les macros.
Puisque vous parlez de formule dans une cellule vous ne cherchez pas a écrire une macro.
Il n'y a donc pas d'initialisation de variable en tant que tel.
Chaque cellule permet d'effectuer un calcul. Chaque référence a cette cellule permet de faire appel au résultat de ce calcul.

Pour simplifier vos formules vous devriez vous intéresser au nommage des cellules et des plages. A mon sens, c'est ce qui s'approche le plus de l'initialisation de variables.
Dans l'absolu, grâce au nommage vous pouvez créer un calcul qui s'effectue hors des cellules visible du classeur (la référence devient la formule à appliquer)
Mars en terme de bonne pratique c'est clairement déconseillé. En effet, dans un tableur l'essentiel m l'ensemble des calculs même intermédiaire doivent être visibles

Claire

Sur votre formule en tant que telle...
Êtes vous dans la feuille/sheet1 ? Si oui
If(a3+a4<>0;a3+a4;"n/a")
Peut déjà se corriger car n/a est une valeur d'erreur que vous devriez obtenir en utilisant le bonne fonction, sans avoir besoin de l'écrire. Il faudrait nous en dire un peu plus sur ce que vous cherchez a faire.

Claire

Bonsoir,

Merci à tous pour vos réponses, je comprends donc qu'une cellule est faite
pour une seule formule et non pour une suite d'instructions.

Mon objectif est simplement, pour un tableau de 12 colonnes (1 colonne par
mois) que je remplis en additionnant des dépenses mensuelles, de ne mettre
aucune valeur pour les mois non encore passés plutôt que la valeur 0. Cela
parce que je trace ensuite un graphe de ce tableau et du coup, il me met 12
points (qui correspondent aux valeurs de chacun des mois) avec la valeur 0
pour tous les mois non encore passés. Cela biaise ensuite l'affichage des
régressions linéaires.

Bref, pour faire court, j'ai le tableau de dépenses suivant :
Jan;Fev;Mar;Avr;Mai;Jui;Jul;Aou;Sep;Oct;Nov;Dec
124;365;254;446;138;98;334;0;0;0;0;0

Et je veux avoir le tableau suivant qui ne met aucune valeur au lieu du 0
Jan;Fev;Mar;Avr;Mai;Jui;Jul;Aou;Sep;Oct;Nov;Dec
124;365;254;446;138;98;334;;;;;

Pour cela j'utilise ma formule avec le if pour mettre la valeur dans le
tableau si différent de 0, sinon mettre "" (ou bien "N/A") au lieu de la
valeur 0. Lors du tracé de la courbe il affiche alors uniquement les points
des mois écoulés (7 sur 12 puisqu'on est en août) et le calcul des
régressions n'est ensuite plus biaisé.

Cordialement,
Arnaud

Bonsoir,

Le plus simple est de garder la formule initiale et de remplacer N/A par "-" par exemple (plutôt qu'une espace ou rien), c'est ce que je fais régulièrement. Visuellement on voit bien qu'il y a là une formule avec un résultat encore non calculé. Ensuite il faut voir si les fonctions utilisées sur ces données acceptent ou pas l'absence d'une valeur numérique (MOYENNE, PENTE: oui; DROITEREG: non)

Bonjour

merci pour ce complément. Comme l'indique Michel vous pourriez conserver la formule initiale, ce n'est pas choquant en fait, en y intégrant cette modif :

SI(a3+a4<>0;a3+a4;NA())

=> la fonction NA() a pour objet de faire ce que vous souhaitez... transformer la valeur de la cellule en "N/D" =non déterminé (le N/A de Excel)

Il est possible aussi d'utiliser une formule de ce type, qui a l'intérêt de reprendre votre besoin (si mes dépenses ne sont pas des chiffres, je n'additionne pas), /mais votre première formule est suffisante, et assez simple, si vous y enlevez les mentions inutiles (la feuille si vous êtes sur la même, etc...)/

SI(ESTNUM(B2);SOMME(B2:B19);NA()), ou si vos nommez vos plages : SI(ESTNUM(B2);SOMME(janvier);NA())

où B2 est la première ligne de vos dépenses du mois considéré, (mais à vous de voir où le critère doit porter...) et B2:B19 la plage de vos dépenses du mois. à vous d'utiliser des références absolues ou relatives selon l'organisation de votre fichier, ou des plages nommées donc.

Il existe aussi la fonction TYPE() qui permet de repérer les cellules "nombre" par rapport aux cellules de texte. Mais quand une cellule est vide, elle est par défaut de type "nombre". Cela n'est donc pas suffisant.

La fonction SOMME.SI est tentante, mais renvoie effectivement 0 quand il n'y a pas de valeur, ce qui n'est pas ce dont vous avez besoin.

Et puisqu'au départ vous cherchiez à utiliser des instructions, des variables à initialiser, cela peut aussi certainement se faire par une macro. Ce n'est pas franchement nécessaire, mais si vous vouliez pousser de ce coté là, d'autres de la liste sauront vous aiguiller.

Claire