Fonctions SI, SOMME et DATEVAL

Résolu/Fermé
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014 - 27 juil. 2014 à 20:46
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014 - 4 sept. 2014 à 22:50
Bonjour,

Débutante avec les fonctions Excel, je n'arrive pas à utiliser la fonction DATEVAL avec SI et SOMME. J'ai un tableau avec des quantités et des prix qui y s'appliquent ; j'ai utilisé la fonction SI et SOMME.

=SI(AW40>0;SOMME(Traitement!AW40*'Grille tarifaire 2013'!$F$13);0)
Pas de souci, et le chiffre 0 apparaît quand la cellule est vide.

Mais, la grille tarifaire vient de changer. Je dois appliquer de nouveaux tarifs mais aussi conserver les anciens. J'ai pensé à utiliser la fonction DATEVAL. Mais j'ai une erreur #VALEUR et je n'arrive pas à la corriger

=SI(DD41>=DATEVAL("01/06/2014");0);SI(AN41>0;SOMME(Traitement!AN41*'Grille tarifaire 2014'!$D$14);0);SI(AN41>0;SOMME(Traitement!AN41*'Grille tarifaire 2013'!$F$8);0)

Avec la formule ci-dessous, seuls les tarifs de 2013 s'affichent et quand la cellule est vide "Faux" apparaît :

=SI(ET($DD42<=DATEVAL("01/06/2014");SI(AN42>0;SOMME(Traitement!AN42*'Grille tarifaire 2014'!$D$14);0));SI(AN42>0;SOMME(Traitement!AN42*'Grille tarifaire 2013'!$F$8);0))

Merci pour vos explications et aide.

13 réponses

via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 737
27 juil. 2014 à 21:14
Bonjour Anita

Déjà très bizarre d'avoir SOMME(Traitement!AW40*'Grille tarifaire 2013'!$F$13) alors que Traitement!AW40*'Grille tarifaire 2013'!$F$13 suffit

Ensuite si DD41 il ya une date pas besoin de DATEVAL DD41>01/06/2014 suffit

Enfin pour bâtir ta formule traite d'abord le cas sans 2 possibilités c'est à dire le cas où la cellule est vide qui doit renvoyer 0 en condition vraie et en condition fausse tu t'occupes des 2 possibilités ce qui pourrait donner quelque chose comme ceci:

Pour la 1ere partie de la formule
si AN42 est ou vide ou contient une valeur =SI(AN42="";0 (si AN42 est vide alors 0) ou bien si AN42 contient une valeur qui peut être 0 : =Si(AN42=0;0 (si AN42=0 alors 0)

Pour la 2nde partie de la formule :
SI($DD42<=01/06/2014;Traitement!AN42*'Grille tarifaire 2013'!$F$8;Traitement!AN42*'Grille tarifaire 2014'!$D$14)

soit la formule complète suivante :
=SI(AN42="";0;SI($DD42<=01/06/2014;Traitement!AN42*'Grille tarifaire 2013'!$F$8;Traitement!AN42*'Grille tarifaire 2014'!$D$14))

ou
=Si(AN42=0;0;SI($DD42<=01/06/2014;Traitement!AN42*'Grille tarifaire 2013'!$F$8;Traitement!AN42*'Grille tarifaire 2014'!$D$14))

Si malgré tout tu n'arrives pas à faire fonctionner tes formules, post un exemple allégé et anonymé de ton fichier sur cjoint.com et indiques ici ensuite le lien fourni, on y verra plus clair pour t'aider

Cdlmnt
1
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
28 juil. 2014 à 03:19
Salut à vous deux.

[La fonction SOMME additionne tous les nombres que vous spécifiez comme arguments.]
Donc faire la somme d'un nombre unique n'a pas de sens ; c'est comme si on écrivait =F13+0 au lieu d'écrire simplement =F13 ... et l'observation de via55 est justifiée.

Par contre DD41>01/06/2014 n'est pas valide, car Excel fait la division de 1 par 6 puis par 2014. Il faut donc soit stocker la date 01/06/2014 dans une cellule disponible comme ZZ1 et écrire DD41>ZZ41, soit laisser faire anita004 avec DATEVAL.

Ceci éclairci, j'ai hâte de voir le fichier d'Anita !
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 737
Modifié par via55 le 28/07/2014 à 14:33
Bonjour Raymond

Si les dates sont bien au format Date (mais j'avais oublié de le préciser) je maintiens que DD41>01/06/2014 suffit (chez moi ça marche) mais tu as raison c'est plus prudent de passer pas DATEVAL

Cdlmnt
0
Bonjour Via et Raymond,

Je vous remercie pour vos explications et votre aide. J'ai corrigé et nettoyé la formule.
Mais il semble que la date n'est pas prise en compte (pourtant le format de la cellule est Date). Ce sont les tarifs de 2014 qui s'appliquent.

Voici le fichier test :
http://cjoint.com/data3/3GCpB48nI4U.htm

Cordialement,
Anita
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 737
28 juil. 2014 à 15:46
Bonjour Anita

Raymond a raison il vaut mieux garder le DATEVAL dans la formule :
....SI($C3<=DATEVAL("01/06/2014")...
et elle fonctionne

par contre je m'interroge sur les tarifs avec un prix unique ! si c'est bien le cas dans la réalité il n'y avait pas besoin des feuilles tarifs , simplement mettre dans la formule ;15;20 à la fin au lieu des références aux cellules des tarifs

et si les tarifs comportent plusieurs produits avec des prix différents ta formule n'est pas adaptée car elle renverra toujours que le prix de la 1ere ligne ? dans ce cas il faudrait une colonne produit ou code produit dans Traitement qui aille trouver par une RECHERCHEV le produit correspondant dans les tarifs et renvoie le prix en regard

Cdlmnt
0
Via,

J'ai effectivement ajouté dans mon fichier de travail la fonction DATEVAL et cela fonctionne.
Merci pour tes explications concernant les tarifs pour plusieurs produits. Cela m'aidera pour les prochains tableaux à mettre en place.
Encore une fois merci pour ton aide.
Cordialement,
Anita
0

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

Posez votre question
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014
1 sept. 2014 à 19:34
Bonjour Via, Bonjour Raymond,

Je reviens vers vous car j'ai un autre souci toujours avec les tarifs 2013 et 2014.
J'ai des prix qui correspondent à des nombres de feuilles. A partir du 1/6/2014, ces prix changent. Mais comment modifier ma formule actuelle pour obtenir la nouvelle tarification tout en gardant l'ancienne.
Je vous joins un exemple qui sera certainement plus clair.
Par avance je vous remercie pour vos explications et aide.
Bien cordialement,
Anita

Voici le fichier Exemple :
http://cjoint.com/14sp/DIbtHI5rDJZ.htm
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 737
1 sept. 2014 à 20:55
Bonsoir,

https://www.cjoint.com/?0Ibu36rQmAF

Une possibilité en rajoutant 2 colonnes pour simplifier la formule

Cdlmnt
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
2 sept. 2014 à 01:34
Bonjour anita004.

Pourquoi ta formule
=SI(B2=0;(0);SI($D2<=DATEVAL("01/06/2014");SI(B2<=3;('Tarifs 2013'!$B$2;'Tarifs 2014'!$B$2);SI(B2<=6;('Tarifs 2013'!$B$3;'Tarifs 2014'!$B$3);SI(B2<=9;('Tarifs 2013'!$B$4;'Tarifs 2014'!$B$4);SI(B2>=10;('Tarifs 2013'!$B$5;'Tarifs 2014'!$B$5)))))))
ne fonctionne-t-elle pas ? Pour en simplifier la lecture, nous allons renommer ta feuille "Tarifs 2013" en "T13" et ta feuille "Tarifs 2014" en "T14" (et supprimer les parenthèses du chiffre 0 en début de formule). Elle devient donc
=SI(B2=0;0;SI($D2<=DATEVAL("01/06/2014");SI(B2<=3;('T13'!$B$2;'T14'!$B$2);SI(B2<=6;('T13'!$B$3;'T14'!$B$3);SI(B2<=9;('T13'!$B$4;'T14'!$B$4);SI(B2>=10;('T13'!$B$5;'T14'!$B$5)))))))
ce qui nous permet de voir plus facilement que SI(B2<=3;('T13'!$B$2;'T14'!$B$2); ne veut rien dire ! En effet tu as créé ici une syntaxe fantaisiste qu'Excel ne connait pas.
Il te faut deux lignes de tests, une pour chaque tarif :
SI(B2<=3;'T13'!$B$2;SI(B2<=6;'T13'!$B$3;SI(B2<=9;'T13'!$B$4;'T13'!$B$5)))
pour le tarif 2013, et pour le tarif 2014
SI(B2<=3;'T14'!$B$2;SI(B2<=6;'T14'!$B$3;SI(B2<=9;'T14'!$B$4;'T14'!$B$5)))
ce qui donne ensemble la formule
=SI(B2=0;0;SI($D2<=DATEVAL("01/06/2014") ; SI(B2<=3;'T13'!$B$2;SI(B2<=6;'T13'!$B$3;SI(B2<=9;'T13'!$B$4;'T13'!$B$5))) ; SI(B2<=3;'T14'!$B$2;SI(B2<=6;'T14'!$B$3;SI(B2<=9;'T14'!$B$4;'T14'!$B$5))) ))
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
2 sept. 2014 à 02:37
Il faut noter qu'il est superflu d'ajouter ton dernier test SI B2>=10 ;
en effet tout ce qui n'est pas <=9 est forcément >9, comme dirait Monsieur de La Palice !
Et prend l'habitude, quand tu dois élaborer une formule avec des SI, OU, ET imbriqués, de dessiner un logigramme, afin de ne pas te mélanger les pinceaux, de bien pointer tous les cas et d'éviter les erreurs de logique.
https://www.cjoint.com/?DIccwqh7OwX
Cordialement.
0
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014
2 sept. 2014 à 10:00
Bonjour Raymond, Bonjour Via,

Merci beaucoup pour votre aide.
Désolée de vous répondre que maintenant !
Raymond merci pour ton schéma, je vais suivre ton excellent conseil.
Je reviendrai vers vous un peu plus tard dès que j'aurai décortiqué et appliqué vos conseils.
Très bonne journée et à bientôt.
Cordialement,
Anita
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
Modifié par Raymond PENTIER le 2/09/2014 à 19:24
Salut Anita.

Ce qu'il y a de formidable avex Excel, c'est qu'il y a presque toujours plusieurs solutions à une même question, plusieurs méthodes pour un même problème ...

Dans ton exemple, il y a l'utilisation de la fonction SI imbriquée, méthode par laquelle tu avais commencé.

Il y a la méthode de via55, avec 2 colonnes en plus et la fonction INDIRECT.

Il existe aussi une autre approche, consistant à créer un seul tableau de tarifs (on économise une feuille) et à utiliser la fonction RECHERCHEV, comme l'avait déjà suggéré via55, au post #5 : https://www.cjoint.com/?DIctewxHzWC ; on définit le nom "Tar" pour la plage Tarif!B3:D6 afin de faciliter la mise à jour de la formule.

C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond (INSA, AFPA, CF/R)
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
2 sept. 2014 à 19:53
Et même pour ma proposition des posts #9 & 11, on peut inverser l'ordre dans la logique des tests.
On ajoute en colonne E le millésime afin d'alléger la formule, qui se résume à :
=SI(B2=0;0;
SI(B2<=3; SI(E2=13;Tarif!C$3;Tarif!D$3);
SI(B2<=6; SI(E2=13;Tarif!C$4;Tarif!D$4);
SI(B2<=9; SI(E2=13;Tarif!C$5;Tarif!D$5);
SI(E2=13;Tarif!C$6;Tarif!D$6) ))) )

https://www.cjoint.com/?DIct3rXLcQ8

Cordialement.
0
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014
2 sept. 2014 à 22:02
Bonsoir Raymond, bonsoir Via,

Mille mercis pour votre aide et vos explications ! ça fonctionne.
C'est merveilleux quand on maîtrise Excel ! Ce qui n'est absolument pas mon cas. En tout cas, grâce à tes conseils Raymond (faire un logigramme), je commence à comprendre un peu la logique mais malheureusement je ne connais pas toutes les fonctionnalités des fonctions proposées et je nage complètement...
Je dois préparer le prochain tableau pour 2015-16 et je vais étudier les fonctions RECHERCHEV et INDIRECT... et surtout faire un logigramme de toutes les fonctions qui existent déjà pour les simplifier et éviter d'avoir un énorme fichier.
Encore une fois, merci à vous deux !
Bonne soirée.
Bien cordialement,
Anita
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
3 sept. 2014 à 03:51
... alors je te recommande la lecture des
 Fiches techniques
que CCM te propose dans la rubrique { Astuces } et particulièrement dans la { section Excel },
... et bien sûr de consulter les discussions du forum Excel où nous nous trouvons.

Amicalement.
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
3 sept. 2014 à 03:56
Pourquoi, dans ton profil, as-tu supprimé la possibilité d'échanger des Messages privés ?
Cela peut s'avérer utile quand on a des fichiers un peu confidentiels, ou alors quand on a honte d'exposer son ignorance à trop de gens ...
0
anita004 Messages postés 7 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 4 septembre 2014
4 sept. 2014 à 22:50
Bonsoir Raymond,

Merci pour tes conseils. Je les consulterai sans faute !
Pour les messages privés, ils ne le sont plus... et ce n'est pas une question de honte car j'avoue être ignorante et demander de l'aide à des experts, c'est aussi apprendre à devenir moins ignorante...
Amicalement,
Anita
0