Je veux le produit des nombres sauf 0 et 1

Fermé
SERGIO - 3 nov. 2010 à 21:41
 SERGIO - 4 nov. 2010 à 18:23
Bonjour,

Voilà, j'éssaye en vain de créer une formule sous excel qui multiplierait deux cellules entre elles excepté le nombre zéro.
En fait on me rémunere d'un ouvrage 15 € avec ou sans illustration.
la deuxième, troixième quatrième etc. illustration est rémunérée 2 €.
Alors moi j'ai mis : cellule A1*2-2 et ça marche trop d'la balle.
Sauf que quand j'ai pas d'illustration et que je mets zéro, ça me met -2€ Là je suis po content du tout car au total, je perds des sous...

Pouvez-vous aider un brave mec du bâtiment, quinquagénere, qui a quitté l'école à 14 ans ?
Je suis certain que ça doit être simple mais bon...

Merci par avance.

18 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
3 nov. 2010 à 21:57
Bonjour,

Vous parlez de multiplier des cellules entre elles mais vous mettez : A2*2 - 2.
Je vois pas le rapport. Pouvez-vous expliquer davantage ?

Cdlt,
0
En fait dans les cellules A1, A2, A3... j'ai la somme de 15 € et dan la cellule B1, B2, B3... j'ai : soit 0, 1, 2, 3....
Dans les cellules C1, C2, C3 j'ai mis =A1+B1*2-2
Ce qui donne pour 0 = -2,00, pour 1 = 0,00€ et pour 2 = 2,00€
0
Je me suis très mal expliqué.
En fait dans la cellule A1 j'ai une constante de 15 €
dans la cellule A2 j'ai le nombre d'illustration à 2€ (à partir de la deuxième)
dans la cellule A3 j'ai le total qui me donne :
pour A2 = 0, A3 = -2,00€
pour A2 = 1, A3 = 0,00€
pour A2 = 2, A3 = 2,00€
Etc.
0
A1 + (A2 * 2)

Ce qui donne
0 => 30 + 0 * 2 => 30
1 => 30 + 1 * 2 => 32
2 => 30 + 0 * 3 => 34
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
3 nov. 2010 à 22:35
Ah c'est beaucoup mieux :-).

Pas besoin d'éliminer les 0.
Pour ma part je mettrais en A3 : = A1 + (A2 - 1) * 2

Cdlt,
0
Bah, y'a rien qui marche. Je suis pas bien précis. On va faire autrement.
Colonne A1 c'est le nombre d'illustrations à 2€ (à partir de la deuxième)
Colonne A2 C'est le montant en €uros des illustrations
En A3 on a A2 (les illustrations) plus 15 €uros de constante.
C'est pour cela qu'au début je n'invoquais que deux cellules avec ma formules à deux balles qui donnait :
A1 = 0 et -2€
A1 = 1 et 0€
A1 = 2 et 2€
0
VOICI MON TABLEAU
et ce que ça donne avec ma formule
| illustrations |
|Nbre|Montant|Ouvrage| TOTAL |
| 0 | -2 |15 euros|13 euros|
| 1 | 0 |15 euros|15 euros|
| 2 | 2 |15 euros|17 euros|
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
3 nov. 2010 à 23:31
C'est pas que vous n'êtes pas précis c'est que vous changez d'un post à l'autre.

Dans un post vous mettez :
En fait dans la cellule A1 j'ai une constante de 15 €
dans la cellule A2 j'ai le nombre d'illustration à 2€ (à partir de la deuxième)

Donc en A1, c'est la constante de 15 €, et en A2 le nombre d'illustration.
C'est ce que j'ai fait dans mon post.

Dans le suivant vous changez et dites :

Colonne A1 c'est le nombre d'illustrations à 2€ (à partir de la deuxième)
Colonne A2 C'est le montant en €uros des illustrations

Ce n'est plus pareil.

La formule néanmoins est : 15 € + (NbreIllustration-1)*2
Je vous laisse adapter selon le nom des cellules.

Cdlt,
0
Je reconnais volontier m'être mélangé mais il n'en demeure pas moins que
la formule proposée (NbreIllustration-1)*2 revient à celle que j'avais évoqué au début
avec 0 pour NbreIllustration cela nous fait un total de -2 euros
Or, qu'il y ait zéro ou une illustration c'est 0,00 euros qu'il me faut.
C'est bien là que ça coince puisqu'il faut bien isoler zéro (selon moi) voire 1
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
4 nov. 2010 à 00:08
Effectivement.

Alors, je propose : =SI(NbreIllustration=0;15;15 + (NbreIllustration-1)*2)

Cela devrait fonctionner :-)
0
Bah, non ça marche pas mais c'est parce que je veux traiter le problème sur deux cellules :
|Nbre|Montant|
Sans tenir compte de la constante qui va varier dans le temps
La formule dans cellule "Montant" doit certainement exister dans un style :
SI Nbre > à 1 alors Nbre X 2 euros
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
4 nov. 2010 à 01:09
=15+SI(NbreIllustration>0;(NbreIllustration-1)*2;0) ?
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
4 nov. 2010 à 00:32
Bonsoir,


A1*2-2 marche pour A1 valant 1,2,3,4,etc
parce que A1*2-2 est égal à (A1-1)*2 = N*2
où N = A1-1 est le nombre d'illustrations à prendre en compte pour le calcul,
c'est à dire N=0 quand A1=1 (une illustration), N=1 quand A1=2 (deux illustrations), N=2 quand A1=3(trois illustrations), etc.

Mais évidemment, ça coince quand il n'y a pas d'illustration car il faudrait encore N=0 mais A1-1 donne -1.



Il y a une astuce:
employer la division euclidienne de 1 par (i+1) ,
qui donne 1 pour i = 0 et 0 pour tout autre entier non nul.
Le résultat de cette fonction permet de corriger la valeur de N uniquement quand N vaut -1.



C'est ce que montre le programme suivant écrit en Python:

print "   |      |             |  nombre d'images  |"
print "   | A1-1 |             |    a considerer   |          prix"
print "A1 |  =N  |  1//(A1+1)  |   N + 1//(A1+1)   |  15 + (N + 1//(A1+1))*2"
print '---------------------------------------------------------------------'
for A1 in range(0,13):
    print str(A1).rjust(2)   + ' | '+\
          str(A1-1).rjust(3) + '  |  1//'+\
          str(A1).ljust(2)   + ' = ' + str(1//(A1+1)) + '  |       '+\
          str(A1-1 + 1//(A1+1)).rjust(2) + '          |           '+\
          str(15 + (A1-1 + 1//(A1+1))*2) 




   |      |             |  nombre d'images  |
   | A1-1 |             |    a considerer   |          prix
A1 |  =N  |  1//(A1+1)  |   N + 1//(A1+1)   |  15 + (N + 1//(A1+1))*2
-------------------------------------------------------------------
 0 |  -1  |  1//0  = 1  |        0          |           15
 1 |   0  |  1//1  = 0  |        0          |           15
 2 |   1  |  1//2  = 0  |        1          |           17
 3 |   2  |  1//3  = 0  |        2          |           19
 4 |   3  |  1//4  = 0  |        3          |           21
 5 |   4  |  1//5  = 0  |        4          |           23
 6 |   5  |  1//6  = 0  |        5          |           25
 7 |   6  |  1//7  = 0  |        6          |           27
 8 |   7  |  1//8  = 0  |        7          |           29
 9 |   8  |  1//9  = 0  |        8          |           31
10 |   9  |  1//10 = 0  |        9          |           33
11 |  10  |  1//11 = 0  |       10          |           35
12 |  11  |  1//12 = 0  |       11          |           37



J'espére que le langage que tu utilises est capable de faire des divisions euclidiennes, c'est à dire avec un quotient entier.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
4 nov. 2010 à 00:35
Bonjour,

Sauf qu'il voulait en Excel ^^.
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 4/11/2010 à 00:54
fiddy, sans vouloir te contrarier, il faudrait apprendre à lire et je me permets de dire ça parce que c'est la deuxième file dans laquelle je t'ai vu répondre trop vite.



J'ai d'abord eu aussi du mal à comprendre ce que SERGIO voulait dire.
Mais j'ai fini par y arriver en ne négligeant pas la phrase suivante:
Sauf que quand j'ai pas d'illustration et que je mets zéro, ça me met -2€ Là je suis po content du tout car au total, je perds des sous... .
Cela évite que ce soit à moi que SERGIO réponde dans le neuvième message



De même, quand j'écris
J'espére que le langage que tu utilises est capable de faire des divisions euclidiennes
cela signifie que je pense bien qu'il va devoir trouver comment adapter ma proposition à ce qu'il utilise, en l'occurence Excel.

Mon programme en Python ne sert qu'à présenter proprement un tableau qui montre
comment 1//(i+1) apporte une solution.

J'apporte une astuce, après c'est à SERGIO de l'intégrer dans son bazar à lui mais je crois que mon astuce à le mérite d'apporter un principe de résolution qui évite un IF quelque chose et que c'est le principe qui est important


cordialement.
0
Bon, les gars, vous êtes forts sympathiques mais pour moi cela devient très compliqué. N'oublez pas que j'aie raté mon examen d'entrée en 6ème en 1969 (et oui, à l'époque il fallait passer un exam pour entrer dans le second cycle)
Si vous trouvez une solution simple sous excel alors c'est bien, sinon c'est pas grave et je ferais mes notes mensuelles de frais à main levée sur papier cadrillé.
Merci en bonne nuit
0
J'approche d'une solution avec:

A2=((A1*2)*NB.SI(A1;">1"))

A2 reste bien à 0,00 €uros pour A1 = 1 ou 0
Le problème c'est que si A1 est égal à :
2 = 4,00 euros au lieu de 2
3 = 6,00 euros au lieu de 4
4 = 8,00 euros au lieu de 6
Etc.
Preuve qu'il existe une solution simple sous Excel.
Je creuse...
0
thanassos Messages postés 1706 Date d'inscription lundi 19 février 2007 Statut Contributeur Dernière intervention 12 février 2016 135
4 nov. 2010 à 08:31
bonjour,
essaye avec ça:
=si(et(A1>1;B1>1);A1*2;0)
tu peux remplacer A1 B1 ET 2 par tes valeurs.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 817
4 nov. 2010 à 08:42
Vous avez dit dans ton post :
La formule dans cellule "Montant" doit certainement exister dans un style :
SI Nbre > à 1 alors Nbre X 2 euros

Et je vous ai donné une solution similaire dans mon précédent post :
=15+SI(NbreIllustration>0;(NbreIllustration-1)*2;0) ?

C'était à vous de l'adapter...
Si vous ne voulez pas ajouter le montant fixe, il vous suffit de supprimer le 15.
Ce qui vous donne la formule : SI(NbreIllustration>0;(NbreIllustration-1)*2;0)

Si on considère que NbreIllustration se situe en A1.
Alors la formule devient : SI(A1>0;(A1-1)*2;0);

On vérifie :
Pour A1=0, cela donne bien 0
Pour A1=1, cela donne bien 0
Pour A1=2, cela donne bien 2
Pour A1=3, cela donne bien 4
Etc.

Cdlt,
0
On a que deux cellules: A1 et B1. Pas trois !
Or si je pose vos formules en B1 rien ne marche.
En revanche mon ébauche de formule =((A1*2)*NB.SI(A1;">1"))
fonctionne en partie puisqu'elle squize les valeurs 0 et 1
Elle ne répond qu'en partie puisque ensuite ça déconne de 2 euros
pour les valeurs supérieur à 1
Je vais réessayer, peut-être que je retranscrits mal
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 4/11/2010 à 11:30
N'utilisant pas Excel, je ne peux pas faire des tests et je dois donc me contenter de lire les docs.

Ce que j'ai vu dans ces docs ne me permet pas de comprendre comment fonctionne la formule
A2=((A1*2)*NB.SI(A1;">1"))

D'après ce que j'ai lu, je verrais plutôt
            2 * SI(A2>1; A2-1; 0) pour le prix des illustrations 
et 
A3 = A1  +  2 * SI(A2>1; A2-1; 0) pour le prix total

avec
A1 = prix de l'ouvrage (15 euros);
il vaut mieux utiliser une colonne contenant ce prix plutôt que le montant numérique, comme ça ce montant pourra être facilement changé
A2 = nombre d'illustrations
A3 = prix total

En fait dans la cellule A1 j'ai une constante de 15 €
dans la cellule A2 j'ai le nombre d'illustration à 2€ (à partir de la deuxième)
dans la cellule A3 j'ai le total

message #3 de SERGIO




Sinon, après avoir consulté de la doc Excel, je pense que la fonction ENT() de Excel est l'équivalent de la division euclidienne // et permet d'obtenir aussi le résultat par calcul sans utiliser de condition SI

A3 = A1 + 2 * ( A2-1 + ENT(1/(A2+1)) )
0
Que c'est beau les mathématiques !
Merci heyquem, ta formule : = 2 * ( A2-1 + ENT(1/(A2+1)) )
fonctionne du feu de Dieu.
Du coup, à vous lire tous je me suis dit qu'il n'était pas trop tard pour en apprendre un peu. Je trouve cela passionnant.
Merci
0