Numbers - Formules et cellules vides

Kounkountchek

Membre expert
Club iGen
24 Juillet 2004
1 162
113
47
2^6
Bonjour,

J'ai fait une recherche sur le forum mais j'ai pas retrouvé mon problème (ni éventuellement ma solution:siffle:)

Mon problème est assez simple je pense pour les utilisateurs de Numbers '08,
Voilà j'ai crée un tableau avec une formule appliquée à une colonne, le problème est que Numbers affiche des résultats même cela s'applique à des cellules vides, or moi j'aimerais qu'il n'affiche un résultat si (et seulement si) une valeur est rentrée.

Un screenshot valant mieux que des mots:

Click for full size - Uploaded with plasq's Skitch

Alors si quelqu'un sait changer cela, j'ai cherché dans les prefs de Numbers mais je n'ai trouvé qu'un avertissement si une formule se réfère à une cellule vide, pas d'option pour ne pas afficher le résultat.


Click for full size - Uploaded with plasq's Skitch

Merci d'avance. :zen:
 
Pas de "préf" pour ça. Je te donne ma solution "Excel", qui doit fonctionner aussi avec Numbers :

"=SI(XY="";"";TON_CALCUL)" ou "XY" représente les coordonnées de la cellule cible, et "TON_CALCUL" la formule que tu as actuellement entré

Ça, c'est générique, mais pour une question de lisibilité (y a pas que des cellules vides dans la vie ;)) on peut y préférer dans certains cas :

"=SI(TON_CALCUL=0;"";TON_CALCUL)".

Dernière alternative dans Excel (Là, je ne sais pas s'il y a l'équivalent dans Numbers) : la mise en forme conditionnelle (formule : "=VALEUR_DE_LA_CELLULE=0" - mise en forme : écrire en blanc sur fond blanc)
 
pour compléter un peu l'intervention de Pascal, mais sans prétention aucune...

On peut aussi utiliser la fonction ESTVIDE :

=si(estvide(B2);"";calcul)

(voir aussi les autres fonctions d'information)

en excel, on peut masquer les valeurs 0 (d'une feuille)

windows : Outils>options>affichage>cocher l'option "valeurs zéro"
mac : Excel>préférences...

MAIS s'il s'agit d'une application où "zéro" n'a pas la même signification que "rien" (exemple : un élève qui a zéro ou qui n'a pas présenté...) il vaut mieux utiliser le si...:)

ps: je ne sais pas si la fonction estvide() existe sous Numbers
 
Ok, merci pour les réponses.

En fait j'ai utilisé SI(XY="";"";[Ma Formule]) car la valeur "0" est valable/valide.
Je viens de vérifier, ESTVIDE() existe aussi sur Numbers, je débute en tableur, je la connaissais pas... :rateau:
Mais je pense que le résultat est le même.

Et sinon, savez vous si on peut utiliser plusieurs "SI" dans la même formule.
(J'ai essayé mais j'ai eu des erreurs, peut être dûes à la syntaxe... :siffle:)
Parce qu'en fait ma formule ressemble à un truc du style:

"- Si XY ('Dist/km') est compris entre 0 et 20, alors faire ce calcul:7,5 +1*1,50
- Si XY est compris entre 20 et 40, faire: 7,5+ 2*1,5...
" et ainsi jusqu'à
"- Si XY est superieur ou egal à 80 faire ce calcul: 7,5+ 5*1,5."

Je vous montre ma formule pour faire ça, vous pouvez vous moquer: :D
Bloc de code:
=SI('Dist (km) A/R'="";"";SI(SOMME(7,5; PRODUIT(QUOTIENT(PLAFOND('Dist (km) A/R'; 20); 20); 1,5))<=15; (SOMME(7,5; PRODUIT(QUOTIENT(PLAFOND('Dist (km) A/R'; 20); 20); 1,5))); "15")+SI('Dist (km) A/R'=0; "1,5"; "0"))

Bon je sais pas si c'est très compréhensible, mais à priori ça marche. Mais je pense que j'ai pas dû utiliser la meilleure (en tout cas la plus courte) méthode pour arriver au résultat. :hein:

Comment feriez vous pour appliquer une formule différente selon la valeur d'une case ? :confused:
 
pas question de se moquer, ce n'est pas le but du forum !!!

déjà bravo pour ta formule !

pour que ta formule ne soit pas si lourde, il faut scinder le calcul en plusieurs cellules :

dans une cellule de travail (p ex X10), tu mets 1 si dist<20; 2 si dist<40; etc au moyen de la formule
=si dist<20;1;si(dist<40;2; si(dist<60; 3 etc )))))))

ensuite, dans la cellule qui doit contenir le résultat, utilises la fonction CHOISIR(valeur; cas valeur=1;cas valeur=2; .....;cas valeur=n) :
profites-en aussi pour multiplier le tout pas 7,5 puisque tu dois le faire pour chaque calcul :

= 7, 5 * choisir( X10 ; 1,5 ; 2*1,5 ; 3*1, 5 ; ...... )

je n'ai pas répondu à la question ... on peut évidemment utiliser plusieurs SI dans une autre fonction SI (celà s'appelle des Si imbriqués. Mais lorsqu'il y a beaucoup de cas à traiter, il vaut mieux utiliser la fonction CHOISIR ...si toutefois elle existe sous Numbers.
 
  • J’aime
Réactions: Kounkountchek
Comment feriez vous pour appliquer une formule différente selon la valeur d'une case ? :confused:

Ben, cette utilisation de SI est juste à priori (en tout cas, partant de la syntaxe Excel, elle fonctionnerait), l'autre solution, à privilégier dans le cas d'un très grand nombre de cellules auxquelles l'appliquer, est l'utilisation des opérateurs logiques.

Un exemple simple : attribution d'une prime exceptionnelle de 5% de leur chiffre d'affaire aux commerciaux ayant dépassé 200 000 &#8364; de CA, et de 2% pour ceux ayant dépassé 100000 :

Avec "SI", ça donne "=SI(CA>200000;CA*5%;SI(CA>100000;CA*2%:0))"

Avec les opérateurs logiques, ça donnerait : "=(CA*3%)*(CA>200000)+(CA*2%)*(CA>100000)"

On multiplie le montant de la prime par la comparaison de CA avec 200000, si cette affirmation est vraie, "(CA>200000)" vaut 1, sinon, si c'est faux, ça vaut 0.

Cette manière de procéder est un peu plus complexe à mettre en &#339;uvre pour des conditions multiples, mais par exemple, cette formule appliquée à un tableau de 10000 ou 15000 lignes génèrera un recalcul dix ou quinze fois plus rapide qu'avec la fonction SI, d'où l'intérêt de maîtriser les deux techniques, le SI pour les petits tableaux, et les opérateurs logiques pour les très grands (disons plus de 5000 lignes), ou leur plus grande rapidité d'évaluation peut faire gagner un temps notable.
 
  • J’aime
Réactions: Kounkountchek
Ah merci pour tous ces conseils, :)

Comme je n'avais que peu de variables (ou je ne sais pas comment les appeler), 6 en fait, j'ai fait une formule plus simple juste avec les SI imbriqués, et j'ai ajouté un SI pour renvoyer "Erreur" si le chiffre de référence est négatif (c'est une distance) et un "ESTVIDE" pour mon problème de départ.

=SI(ESTVIDE(XY);"";SI(XY<0;"Erreur";SI(XY<=20;9;SI(XY<=40;10,5;SI(XY<=60;12;SI(XY<=80;13,5;15))))))

Bon ça fait un peu lourd comme ça et j'imagine que si j'avais beaucoup plus de tranches de valeurs à determiner, il faudrait faire autrement, mais vu que ça ne va pas trop évoluer, je pense que ça ira très bien comme ça. :siffle:

C'est marrant, établir des formules comme ça, ça me rappelle la résolution des "problèmes "à l'école. :D

Merci en tout cas, j'ai appris plein de choses aujourd'hui :love:
 
  • J’aime
Réactions: Human-Fly et F118I4