{Numbers} : Renvoyer résultat d'un calcul variable selon valeur donnée dans une autre cellule

iRyys

Membre enregistré
29 Novembre 2017
5
0
30
Bonsoir !

J'ai besoin d'une personne balèze en tableurs et fonctions Numbers ! :siffle:
Je n'ai pas trouvé réponse à mes questionnements sur les forums pour le moment, désolée si je répète une question qui avait déjà reçue une réponse :sorry:

Je suis une vraie newbie dans le monde des tableurs, et voilà un mois que j'essaie de mettre au point toute l'administration de mon entreprise sous Numbers. Je commence à bien maîtriser mes feuilles de calculs, la fonction RECHERCHE, les menus déroulants...

Mais là, je me heurte à un problème (de flemme, puisque je pourrais très bien faire le calcul à la main, mais voyons, avec les tableurs, le but c'est bien de tout automatiser, n'est-ce pas?).

J'aimerais renvoyer le résultat d'un calcul selon la donnée inscrite dans une cellule précédente.
Je m'explique :
- J'ai les montants des recettes (colonne E)
- ...auxquels il faut que j'enlève la commission qui est variable selon le mode d'encaissement (colonne F qui est un menu déroulant)


Je tente en vain la fonction SI mais je tombe sans arrêt sur des erreurs de syntaxe ou autres erreurs qui sont du chinois à mes yeux....

Donc comment faire pour que dans la colonne G j'aie le résultat de la colonne E moins la commission variable?

Pour info :
- commission = 0 si F = Chèque
- commission = 3,4% + 0,25€ si F = Paypal
- commission = 1,4% + 0,25€ si F = Carte bancaire

Merci d'avance, Grand Génie de l'Internet :coucou:
 
Pour traquer les erreurs de syntaxe, je trouve plus facile de scinder les commandes — telles que des SI — en les répartissant sur plusieurs colonnes avant de les imbriquer. Ainsi tu peux tester chaque étape ; quand ça marche bien, tu remettras éventuellement tout ensemble.

++++++++++++

Dans le cas que tu évoques, je commencerais par créer un 2e tableau avec les commissions et les coûts fixes selon le mode de paiement (juste une bonne habitude, par précaution — comme ça, si ça change je ne dois pas tout refaire) :
Capture d’écran 2017-11-30 à 04.14.32.png
J'y ferais chaque fois référence avec des valeurs absolues (Tableau 2 : rang et colonne précédés de $) sauf que comme j'ai créé un autre tableau, avec des en-têtes pour nommer les colonnes et un seul rang de données, quand je clique dans une de ces cellules pour y faire référence dans une formule, ça me donne une expression plus parlante, p.ex. "Comm.(ission) Paypal".

++++++++++

Ensuite dans mon tableau principal, je crée d'abord une colonne G qui ne traite que les paiements en cash :
Je tape la formule suivante en G2
Bloc de code:
=SI($F2="Cash";$E2)
et je recopie la formule vers le bas en cliquant sur le coin inférieur de la cellule jusqu'à avoir un curseur en forme de "+" non gras, puis je glisse vers le bas (= recopie incrémentée)

Colonne G
Capture d’écran 2017-11-30 à 03.58.09.png

Puis, une colonne H qui traite les paiements par carte bancaire (mais en ne prenant en compte que la commission, que je soustrais, sans compter encore les frais fixes — de nouveau, par prudence, je vérifie d'abord chaque calcul un par un) :

colonne H
Bloc de code:
=SI($F2="Carte bancaire";($E2-Comm. CB*$E2))
Capture d’écran 2017-11-30 à 04.22.34.png
Comme tout va bien et que les chiffres sont justes, j'ajoute une colonne I qui inclut aussi les frais fixes pour les paiements par carte bancaire :

colonne I
Bloc de code:
=SI($F2="Carte bancaire";($E2-Comm. CB*$E2)+Fixe CB)

++++++++++++

Je fais pareil pour les paiements par Paypal, en créant deux colonnes J et K :

colonne J
Bloc de code:
=SI($F2="Paypal";($E2-$E2*Comm. Paypal))

colonne K
Bloc de code:
=SI($F2="Paypal";($E2-$E2*Comm. Paypal)+Fixe Paypal)
Capture d’écran 2017-11-30 à 04.31.51.png

++++++++

J'ai ainsi pu vérifier et rectifier tous mes calculs et toutes mes formules ; il me reste à les imbriquer.
On sait que la formule SI peut avoir trois arguments : (énoncé de la condition; réponse si OUI; réponse si NON).

Il s'agit donc de reprendre successivement les formules des colonnes G, I et K et de les intercaler lorsque la première condition n'est pas remplie.
À nouveau, je procède une étape à la fois :
A la suite de la formule G écrite sur le mode "SI (condition; réponse si OUI)"
Bloc de code:
=SI($F2="Cash";$E2)
j'ajoute un point-virgule avant la dernière parenthèse pour dire quoi faire si la condition n'est pas remplie et je colle à la suite la formule SI de la colonne I (Carte bancaire), sans son signe "égale" initial :

colonne L
Bloc de code:
=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)+Fixe CB))
Je vérifie que les résultats sont cohérents jusque là :
Capture d’écran 2017-11-30 à 04.50.22.png
Et je réitère le processus, en ajoutant un point-virgule et la formule SI de la colonne K (Paypal) avant la dernière parenthèse — toujours en omettant son signe "égale" :

colonne L (version finale)
Bloc de code:
=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)+Fixe CB;SI($F2="Paypal";($E2-$E2*Comm. Paypal)+Fixe Paypal)))
Capture d’écran 2017-11-30 à 05.36.29.png
Je constate que les résultats sont tous identiques à ceux que j'obtenais en traitant chaque mode de paiement séparément : je ne me suis donc pas trompé !
;)


+++++++++++

Le processus fut long mais sans embûches…

Bonne chance !
:)

[P.S. J'ai chaque fois indiqué Cash alors que tu disais Chèque : c'est un mode de paiement qui est si désuet chez nous que ça m'était sorti de la tête…]
 
Dernière édition:
  • J’aime
Réactions: Aliboron
Euh… Je m'aperçois que j'ai aussi oublié de réfléchir ! :banghead: :banghead: :banghead:

Les 0,25 € de frais fixes à ajouter à la commission étaient évidemment à déduire de la recette.
Mes calculs sont donc faux… mais on dira que c'est le principe qui compte. :angelic:

Je remets quand même la formule finale rectifiée :
Bloc de code:
=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)-Fixe CB;SI($F2="Paypal";($E2-$E2*Comm. Paypal)-Fixe Paypal)))

N.B. On pouvait aussi ne pas changer la formule (quand elle est très longue, on a vite fait de se tromper) et simplement mettre des chiffres négatifs dans le tableau secondaire.
 
Dernière édition:
  • J’aime
Réactions: iRyys
Euh… Je m'aperçois que j'ai aussi oublié de réfléchir ! :banghead: :banghead: :banghead:

Les 0,25 € de frais fixes à ajouter à la commission étaient évidemment à déduire de la recette.
Mes calculs sont donc faux… mais on dira que c'est le principe qui compte. :angelic:

Je remets quand même la formule finale rectifiée :
Bloc de code:
=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)-Fixe CB;SI($F2="Paypal";($E2-$E2*Comm. Paypal)-Fixe Paypal)))

N.B. On pouvait aussi ne pas changer la formule (quand elle est très longue, on a vite fait de se tromper) et simplement mettre des chiffres négatifs dans le tableau secondaire.

OK ! Je n’aurais pas pu rêver plus complet comme réponse!! :) je vais essayer tout ça! S’il y a un truc où je bloque je reviendrai pour plus d’infos ...
Mais je devrais y arriver là !
Merci beaucoup!
 
Merci ! :D:D:D
Ça fonctionne à merveille (mais tu le savais déjà bien sûr) !
J'ai juste pris le temps de vraiment le faire étape par étape histoire de pas faire un copier/coller bête & méchant. Je suis venue apprendre après tout..! :)
 
Je remets quand même la formule finale rectifiée :
Bloc de code:
=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)-Fixe CB;SI($F2="Paypal";($E2-$E2*Comm. Paypal)-Fixe Paypal)))

Au fait, comme il s'agit de devises, j'ai rajouté la formule ARRONDI juste avant, parce que mes résultats finaux ne correspondaient pas lors de ma vérification manuelle!

Donc :
ARRONDI(=SI($F2="Cash";$E2;SI($F2="Carte bancaire";($E2-Comm. CB*$E2)-Fixe CB;SI($F2="Paypal";($E2-$E2*Comm. Paypal)-Fixe Paypal)));2)

;)
 
Tu pouvais aussi simplement définir le format des cellules comme Devises plutôt qu'Automatique. ;)

C’est ce que j’ai fait ! Mais apparemment Numbers garde en mémoire les autres décimales et lorsqu’on applique des calculs automatiques il se base sur toutes les décimales et donne donc des résultats certes très justes mais pas les bons quand il s’agit d’argent ;)
 
Oui, le choix d'un format de nombre n'affecte que l'affichage mais pas la valeur sous-jacente. Dans ces cas-là, la fonction ARRONDI est bienvenue. :)