Fonctions INDEX(EQUIV) imbriquées dans une fonction SI

Le
Anonyme
Bonjour à toutes et tous,

Je chercher à appliquer une formule associant les fonctions INDEX/EQUIV
seulement si le nombre d'occurrences d'une autre variable est supérieur à un
critère ET le tout pour certaines lignes seulement. Je détaille l'objet du
fichier et son fonctionnement actuel pour que tout soit clair.

J'aide une personne qui travaille dans une toute boîte auprès de laquelle
les clients peuvent, chaque semaine, passer des commandes via le CE de leur
entreprise. Une remise est appliquée à partir de n commandes passées au sein
de la même entreprise lors de la même semaine.
NB1. Le montant de la remise change d'une entreprise à l'autre (aucune
remise, -3%, -5%).
NB2. Le nombre n de commande à partir duquel la remise est appliquée varie
d'une
entreprise à l'autre.

La boîte en question utilise un fichier Excel dans lequel sont répertoriées
les conditions appliquées à chaque entreprise dans une feuille, toutes les
commandes dans une autre feuille. J'ai déjà travaillé sur le fichier pour
automatiser les choses mais il reste encore une dernière opération qui est
faite à la main, qui prend du temps et est source d'erreurs, alors qu'elle
pourrait, j'en suis certain, être automatisée. Et c'est là que j'ai besoin
d'aide
car ça dépasse très largement mes compétences !!!

Pour l'instant, dans le fichier, la remise est appliquée par défaut alors
qu'elle
ne devrait l'être uniquement si le nombre de commandes passées la même
semaine au sein de la même entreprise atteint le minimum requis. L'idéal
serait que la valeur de la remise soit automatiquement renvoyée - via les
fonctions INDEX(EQUIV) - si, et seulement si le nombre minimum de commandes
est atteint au sein d'une même entreprise pour la même semaine.

______________________________
VOICI LA MANIERE DONT LE FICHIER EST ORGANISE POUR L'INSTANT (CF. EXEMPLE
SIMPLIFIE ICI :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0D8Wrmm.xlsx).

Soit dans une feuille nommée ''Entreprises'', le récapitulatif de toutes les
entreprises et les conditions qui sont appliquées à chacune :
| A : Entreprise | B : Remise | C : NB commandes min |
Où A = la liste de toutes les entreprises
B = le coefficient de remise appliqué pour l'entreprise
C = le nombre de commande par semaine à partir duquel est appliquée la
remise

Soit dans une deuxième feuille nommée ''Commandes'', toutes les commandes
passées (chaque ligne représente une commande) :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E :
Remise | F : Montant facturé | et d'autres variables hors de sujet pour le
présent problème.
Où A = le numéro de la semaine au cours de laquelle la commande est passée
B = le nom du client
C = le nom de l'entreprise dont il fait partie
D = le montant de la commande avant remise
E = le coefficient de remise, différent d'une entreprise à l'autre. Cette
valeur est récupérée dans la feuille ''Entreprises'' par la fonction
suivante : =INDEX(Entreprises!B:B;EQUIV(Commandes!C1110;Entreprises!A:A;0)).
F = le montant total facturé (produit D*E)

______________________________
VOICI MAINTENANT LA QUESTION.

On souhaite donc que, si le nombre de commandes pour une même entreprise, la
même semaine, est supérieur ou égal au nombre minimum requis, la remise soit
alors appliquée ; sinon, qu'aucune remise ne soit appliquée.

Par exemple, l'entreprise TOTO a une remise de 3% à partir de 10 commandes
passées la même semaine, l'entreprise MAMA a une remise de 5% à partir de 5
commandes passées la même semaine.

Soit, dans la feuille ''Entreprises'' les infos suivantes :
| A : Entreprise | B : Remise | C : NB commandes min |
| TOTO | 0,97 | 10 |
| MAMA | 0,95 | 5 |

Dans la feuille ''Commandes'', on souhaite le processus suivant :
. si le nombre d'occurrence d'une entreprise pour la même semaine est
supérieur ou égal à la valeur en C (NB commandes min) dans la feuille
''Entreprises'', (= si le nombre de commandes dans l'entreprise TOTO est
supérieur ou égal à 10) ;
. alors la valeur renvoyée en E (Remise) dans la feuille ''Commandes'' doit
être la valeur en B (Remise) de la feuille ''Entreprises'', (= alors le
coefficient de remise doit être de 0,97) ;
. sinon, la valeur renvoyée doit être égale à 1 (pas de remise), (= sinon,
le coefficient de remise doit être de 1).

Soit le résultat attendu dans la feuille ''Commandes'' :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E :
Remise | F : Montant TTC facturé |
[.]
| sem 5 | Michel B | TOTO | 20,00 ? | 1 | 20,00?
| sem 5 | Anne A | TOTO | 18,00 ? | 1 |18,00?
| sem 5 | Laurent R | TOTO | 10,00 ? | 1 |10,00?
| sem 5 | Bernard C | TOTO | 14,00 ? | 1 |14,00?
| sem 5 | Julie B | TOTO | 13,00 ? | 1 |13,00?
| sem 5 | David T | TOTO | 17,00 ? | 1 |17,00?
| sem 5 | Paul G | TOTO | 20,00 ? | 1 |20 ,00?
| sem 5 | Max E | TOTO | 43,00 ? | 1 |43,00?
| sem 5 | Thierry S | TOTO | 15,00 ? | 1 |15,00?
| sem 5 | Michel Z | MAMA | 30,00 ? | 0,95 |28,50?
| sem 5 | Jeanne A | MAMA | 17,00 ? | 0,95 |16,15?
| sem 5 | Mireille R | MAMA | 20,00 ? | 0,95 |19,00?
| sem 5 | Jean U | MAMA | 15,00 ? | 0,95 |14,25?
| sem 5 | Christophe S | MAMA | 20,00 ? | 0,95 |19,00
| sem 5 | Jojo B | MAMA | 12,00 ? | 0,95 |11,40?
| sem 5 | Rachid Z | MAMA | 22,00 ? | 0,95 |20,90?
[.]

Dans l'exemple ci-dessus, on a bien :
. Pour l'entreprise TOTO, 9 commandes ont été passées la semaine 5 alors que
le nombre minimum pour une remise est de 10. La valeur renvoyée en E doit
donc être « 1 » (pas de remise).
. Pour l'entreprise MAMA, 7 commandes ont été passées la semaine 5 alors que
le nombre minimum pour une remise est de 5. La valeur renvoyée en E doit
donc être 0,95 (une remise de 5% doit être appliquée).
Dans l'état actuel du fichier, la remise est appliquée par défaut sans tenir
compte du nombre de commandes passées.

J'espère que tout est clair car j'avoue que les choses ne sont pas simples à
formuler.
Merci de votre aide pour résoudre le problème ou, pour le moins, m'orienter
vers des pistes possibles.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
HasTrouBal
Le #21196071
Bonjour

En colonne E (Remise) de entreprises:

=SI(SOMMEPROD((Commandes!$C$2:$C$49=Commandes!C2)*(Commandes!$A$2:$A$49=Commandes!A2))>=RECHERCHEV(Commandes!C2;Entreprises!$A$2:$C$3;3;FAUX);RECHERCHEV(Commandes!C2;Entreprises!$A$2:$C$3;2;FAUX);1)

Pas beau, m'enfin ça marche!!

HasTrouBal


"Anonyme"
écrit dans le message de news:%
Bonjour à toutes et tous,

Je chercher à appliquer une formule associant les fonctions INDEX/EQUIV
seulement si le nombre d'occurrences d'une autre variable est supérieur
à
un
critère ET le tout pour certaines lignes seulement. Je détaille
l'objet du
fichier et son fonctionnement actuel pour que tout soit clair.

J'aide une personne qui travaille dans une toute boîte auprès de
laquelle
les clients peuvent, chaque semaine, passer des commandes via le CE de
leur
entreprise. Une remise est appliquée à partir de n commandes
passées au
sein
de la même entreprise lors de la même semaine.
NB1. Le montant de la remise change d'une entreprise à l'autre (aucune
remise, -3%, -5%).
NB2. Le nombre n de commande à partir duquel la remise est
appliquée varie
d'une
entreprise à l'autre.

La boîte en question utilise un fichier Excel dans lequel sont
répertoriées
les conditions appliquées à chaque entreprise dans une feuille,
toutes les
commandes dans une autre feuille. J'ai déjà travaillé sur
le fichier pour
automatiser les choses mais il reste encore une dernière
opération qui est
faite à la main, qui prend du temps et est source d'erreurs, alors
qu'elle
pourrait, j'en suis certain, être automatisée. Et c'est là
que j'ai besoin
d'aide
car ça dépasse très largement mes compétences !!!

Pour l'instant, dans le fichier, la remise est appliquée par
défaut alors
qu'elle
ne devrait l'être uniquement si le nombre de commandes passées la
même
semaine au sein de la même entreprise atteint le minimum requis.
L'idéal
serait que la valeur de la remise soit automatiquement renvoyée - via
les
fonctions INDEX(EQUIV) - si, et seulement si le nombre minimum de
commandes
est atteint au sein d'une même entreprise pour la même semaine.

______________________________
VOICI LA MANIERE DONT LE FICHIER EST ORGANISE POUR L'INSTANT (CF. EXEMPLE
SIMPLIFIE ICI :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0D8Wrmm.xlsx).

Soit dans une feuille nommée ''Entreprises'', le récapitulatif de
toutes
les
entreprises et les conditions qui sont appliquées à chacune :
| A : Entreprise | B : Remise | C : NB commandes min |
Où A = la liste de toutes les entreprises
B = le coefficient de remise appliqué pour l'entreprise
C = le nombre de commande par semaine à partir duquel est
appliquée la
remise

Soit dans une deuxième feuille nommée ''Commandes'', toutes les
commandes
passées (chaque ligne représente une commande) :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E
:
Remise | F : Montant facturé | et d'autres variables hors de sujet pour
le
présent problème.
Où A = le numéro de la semaine au cours de laquelle la commande
est
passée
B = le nom du client
C = le nom de l'entreprise dont il fait partie
D = le montant de la commande avant remise
E = le coefficient de remise, différent d'une entreprise à
l'autre. Cette
valeur est récupérée dans la feuille ''Entreprises'' par
la fonction
suivante :
=INDEX(Entreprises!B:B;EQUIV(Commandes!C1110;Entreprises!A:A;0)).
F = le montant total facturé (produit D*E)

______________________________
VOICI MAINTENANT LA QUESTION.

On souhaite donc que, si le nombre de commandes pour une même entreprise,
la
même semaine, est supérieur ou égal au nombre minimum
requis, la remise
soit
alors appliquée ; sinon, qu'aucune remise ne soit appliquée.

Par exemple, l'entreprise TOTO a une remise de 3% à partir de 10
commandes
passées la même semaine, l'entreprise MAMA a une remise de 5%
à partir de
5
commandes passées la même semaine.

Soit, dans la feuille ''Entreprises'' les infos suivantes :
| A : Entreprise | B : Remise | C : NB commandes min |
| TOTO | 0,97 | 10 |
| MAMA | 0,95 | 5 |

Dans la feuille ''Commandes'', on souhaite le processus suivant :
. si le nombre d'occurrence d'une entreprise pour la même semaine est
supérieur ou égal à la valeur en C (NB commandes min) dans
la feuille
''Entreprises'', (= si le nombre de commandes dans l'entreprise TOTO est
supérieur ou égal à 10) ;
. alors la valeur renvoyée en E (Remise) dans la feuille ''Commandes''
doit
être la valeur en B (Remise) de la feuille ''Entreprises'', (= alors le
coefficient de remise doit être de 0,97) ;
. sinon, la valeur renvoyée doit être égale à 1 (pas
de remise), (= sinon,
le coefficient de remise doit être de 1).

Soit le résultat attendu dans la feuille ''Commandes'' :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E
:
Remise | F : Montant TTC facturé |
[.]
| sem 5 | Michel B | TOTO | 20,00 ? | 1 | 20,00?
| sem 5 | Anne A | TOTO | 18,00 ? | 1 |18,00?
| sem 5 | Laurent R | TOTO | 10,00 ? | 1 |10,00?
| sem 5 | Bernard C | TOTO | 14,00 ? | 1 |14,00?
| sem 5 | Julie B | TOTO | 13,00 ? | 1 |13,00?
| sem 5 | David T | TOTO | 17,00 ? | 1 |17,00?
| sem 5 | Paul G | TOTO | 20,00 ? | 1 |20 ,00?
| sem 5 | Max E | TOTO | 43,00 ? | 1 |43,00?
| sem 5 | Thierry S | TOTO | 15,00 ? | 1 |15,00?
| sem 5 | Michel Z | MAMA | 30,00 ? | 0,95 |28,50?
| sem 5 | Jeanne A | MAMA | 17,00 ? | 0,95 |16,15?
| sem 5 | Mireille R | MAMA | 20,00 ? | 0,95 |19,00?
| sem 5 | Jean U | MAMA | 15,00 ? | 0,95 |14,25?
| sem 5 | Christophe S | MAMA | 20,00 ? | 0,95 |19,00
| sem 5 | Jojo B | MAMA | 12,00 ? | 0,95 |11,40?
| sem 5 | Rachid Z | MAMA | 22,00 ? | 0,95 |20,90?
[.]

Dans l'exemple ci-dessus, on a bien :
. Pour l'entreprise TOTO, 9 commandes ont été passées la
semaine 5 alors
que
le nombre minimum pour une remise est de 10. La valeur renvoyée en E
doit
donc être « 1 » (pas de remise).
. Pour l'entreprise MAMA, 7 commandes ont été passées la
semaine 5 alors
que
le nombre minimum pour une remise est de 5. La valeur renvoyée en E doit
donc être 0,95 (une remise de 5% doit être appliquée).
Dans l'état actuel du fichier, la remise est appliquée par
défaut sans
tenir
compte du nombre de commandes passées.

J'espère que tout est clair car j'avoue que les choses ne sont pas
simples
à
formuler.
Merci de votre aide pour résoudre le problème ou, pour le moins,
m'orienter
vers des pistes possibles.


Anonyme
Le #21196491
Bonsoir
Ce n'est peut-être pas beau (encore que...) mais ça a le
mérite d'être très
efficace !!!
Je viens de tester la formule sur le fichier exemple et tout fonctionne
parfaitement.
Merci mille fois !!!
Bonne soirée !

"HasTrouBal" message de
news:
Bonjour

En colonne E (Remise) de entreprises:

=SI(SOMMEPROD((Commandes!$C$2:$C$49=Commandes!C2)*(Commandes!$A$2:$A$49=Commandes!A2))>=RECHERCHEV(Commandes!C2;Entreprises!$A$2:$C$3;3;FAUX);RECHERCHEV(Commandes!C2;Entreprises!$A$2:$C$3;2;FAUX);1)

Pas beau, m'enfin ça marche!!

HasTrouBal


"Anonyme"
écrit dans le message de news:%
Bonjour à toutes et tous,

Je chercher à appliquer une formule associant les fonctions INDEX/EQUIV
seulement si le nombre d'occurrences d'une autre variable est supérieur
à
un
critère ET le tout pour certaines lignes seulement. Je détaille
l'objet
du
fichier et son fonctionnement actuel pour que tout soit clair.

J'aide une personne qui travaille dans une toute boîte auprès de
laquelle
les clients peuvent, chaque semaine, passer des commandes via le CE de
leur
entreprise. Une remise est appliquée à partir de n commandes
passées au
sein
de la même entreprise lors de la même semaine.
NB1. Le montant de la remise change d'une entreprise à l'autre (aucune
remise, -3%, -5%).
NB2. Le nombre n de commande à partir duquel la remise est
appliquée
varie d'une
entreprise à l'autre.

La boîte en question utilise un fichier Excel dans lequel sont
répertoriées
les conditions appliquées à chaque entreprise dans une feuille,
toutes
les
commandes dans une autre feuille. J'ai déjà travaillé sur
le fichier pour
automatiser les choses mais il reste encore une dernière
opération qui
est
faite à la main, qui prend du temps et est source d'erreurs, alors
qu'elle
pourrait, j'en suis certain, être automatisée. Et c'est là
que j'ai
besoin d'aide
car ça dépasse très largement mes compétences !!!

Pour l'instant, dans le fichier, la remise est appliquée par
défaut alors
qu'elle
ne devrait l'être uniquement si le nombre de commandes passées la
même
semaine au sein de la même entreprise atteint le minimum requis.
L'idéal
serait que la valeur de la remise soit automatiquement renvoyée - via
les
fonctions INDEX(EQUIV) - si, et seulement si le nombre minimum de
commandes
est atteint au sein d'une même entreprise pour la même semaine.

______________________________
VOICI LA MANIERE DONT LE FICHIER EST ORGANISE POUR L'INSTANT (CF. EXEMPLE
SIMPLIFIE ICI :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0D8Wrmm.xlsx).

Soit dans une feuille nommée ''Entreprises'', le récapitulatif
de toutes
les
entreprises et les conditions qui sont appliquées à chacune :
| A : Entreprise | B : Remise | C : NB commandes min |
Où A = la liste de toutes les entreprises
B = le coefficient de remise appliqué pour l'entreprise
C = le nombre de commande par semaine à partir duquel est
appliquée la
remise

Soit dans une deuxième feuille nommée ''Commandes'', toutes les
commandes
passées (chaque ligne représente une commande) :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E
:
Remise | F : Montant facturé | et d'autres variables hors de sujet pour
le
présent problème.
Où A = le numéro de la semaine au cours de laquelle la commande
est
passée
B = le nom du client
C = le nom de l'entreprise dont il fait partie
D = le montant de la commande avant remise
E = le coefficient de remise, différent d'une entreprise à
l'autre. Cette
valeur est récupérée dans la feuille ''Entreprises'' par
la fonction
suivante :
=INDEX(Entreprises!B:B;EQUIV(Commandes!C1110;Entreprises!A:A;0)).
F = le montant total facturé (produit D*E)

______________________________
VOICI MAINTENANT LA QUESTION.

On souhaite donc que, si le nombre de commandes pour une même
entreprise,
la
même semaine, est supérieur ou égal au nombre minimum
requis, la remise
soit
alors appliquée ; sinon, qu'aucune remise ne soit appliquée.

Par exemple, l'entreprise TOTO a une remise de 3% à partir de 10
commandes
passées la même semaine, l'entreprise MAMA a une remise de 5%
à partir de
5
commandes passées la même semaine.

Soit, dans la feuille ''Entreprises'' les infos suivantes :
| A : Entreprise | B : Remise | C : NB commandes min |
| TOTO | 0,97 | 10 |
| MAMA | 0,95 | 5 |

Dans la feuille ''Commandes'', on souhaite le processus suivant :
. si le nombre d'occurrence d'une entreprise pour la même semaine est
supérieur ou égal à la valeur en C (NB commandes min)
dans la feuille
''Entreprises'', (= si le nombre de commandes dans l'entreprise TOTO est
supérieur ou égal à 10) ;
. alors la valeur renvoyée en E (Remise) dans la feuille ''Commandes''
doit
être la valeur en B (Remise) de la feuille ''Entreprises'', (= alors le
coefficient de remise doit être de 0,97) ;
. sinon, la valeur renvoyée doit être égale à 1
(pas de remise), (=
sinon,
le coefficient de remise doit être de 1).

Soit le résultat attendu dans la feuille ''Commandes'' :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E
:
Remise | F : Montant TTC facturé |
[.]
| sem 5 | Michel B | TOTO | 20,00 ? | 1 | 20,00?
| sem 5 | Anne A | TOTO | 18,00 ? | 1 |18,00?
| sem 5 | Laurent R | TOTO | 10,00 ? | 1 |10,00?
| sem 5 | Bernard C | TOTO | 14,00 ? | 1 |14,00?
| sem 5 | Julie B | TOTO | 13,00 ? | 1 |13,00?
| sem 5 | David T | TOTO | 17,00 ? | 1 |17,00?
| sem 5 | Paul G | TOTO | 20,00 ? | 1 |20 ,00?
| sem 5 | Max E | TOTO | 43,00 ? | 1 |43,00?
| sem 5 | Thierry S | TOTO | 15,00 ? | 1 |15,00?
| sem 5 | Michel Z | MAMA | 30,00 ? | 0,95 |28,50?
| sem 5 | Jeanne A | MAMA | 17,00 ? | 0,95 |16,15?
| sem 5 | Mireille R | MAMA | 20,00 ? | 0,95 |19,00?
| sem 5 | Jean U | MAMA | 15,00 ? | 0,95 |14,25?
| sem 5 | Christophe S | MAMA | 20,00 ? | 0,95 |19,00
| sem 5 | Jojo B | MAMA | 12,00 ? | 0,95 |11,40?
| sem 5 | Rachid Z | MAMA | 22,00 ? | 0,95 |20,90?
[.]

Dans l'exemple ci-dessus, on a bien :
. Pour l'entreprise TOTO, 9 commandes ont été passées la
semaine 5 alors
que
le nombre minimum pour une remise est de 10. La valeur renvoyée en E
doit
donc être « 1 » (pas de remise).
. Pour l'entreprise MAMA, 7 commandes ont été passées la
semaine 5 alors
que
le nombre minimum pour une remise est de 5. La valeur renvoyée en E
doit
donc être 0,95 (une remise de 5% doit être appliquée).
Dans l'état actuel du fichier, la remise est appliquée par
défaut sans
tenir
compte du nombre de commandes passées.

J'espère que tout est clair car j'avoue que les choses ne sont pas
simples à
formuler.
Merci de votre aide pour résoudre le problème ou, pour le moins,
m'orienter
vers des pistes possibles.






septima08 Hors ligne
Le #26357583
Le dimanche 14 Février 2010 à 16:46 par Anonyme :
Bonjour à toutes et tous,

Je chercher à appliquer une formule associant les fonctions INDEX/EQUIV
seulement si le nombre d'occurrences d'une autre variable est supérieur
à un
critère ET le tout pour certaines lignes seulement. Je détaille
l'objet du
fichier et son fonctionnement actuel pour que tout soit clair.

J'aide une personne qui travaille dans une toute boîte auprès de
laquelle
les clients peuvent, chaque semaine, passer des commandes via le CE de leur
entreprise. Une remise est appliquée à partir de n commandes
passées au sein
de la même entreprise lors de la même semaine.
NB1. Le montant de la remise change d'une entreprise à l'autre (aucune
remise, -3%, -5%).
NB2. Le nombre n de commande à partir duquel la remise est
appliquée varie
d'une
entreprise à l'autre.

La boîte en question utilise un fichier Excel dans lequel sont
répertoriées
les conditions appliquées à chaque entreprise dans une feuille,
toutes les
commandes dans une autre feuille. J'ai déjà travaillé sur
le fichier pour
automatiser les choses mais il reste encore une dernière
opération qui est
faite à la main, qui prend du temps et est source d'erreurs, alors
qu'elle
pourrait, j'en suis certain, être automatisée. Et c'est là
que j'ai besoin
d'aide
car ça dépasse très largement mes compétences !!!

Pour l'instant, dans le fichier, la remise est appliquée par
défaut alors
qu'elle
ne devrait l'être uniquement si le nombre de commandes passées la
même
semaine au sein de la même entreprise atteint le minimum requis.
L'idéal
serait que la valeur de la remise soit automatiquement renvoyée - via
les
fonctions INDEX(EQUIV) - si, et seulement si le nombre minimum de commandes
est atteint au sein d'une même entreprise pour la même semaine.

______________________________
VOICI LA MANIERE DONT LE FICHIER EST ORGANISE POUR L'INSTANT (CF. EXEMPLE
SIMPLIFIE ICI :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0D8Wrmm.xlsx).

Soit dans une feuille nommée ''Entreprises'', le récapitulatif de
toutes les
entreprises et les conditions qui sont appliquées à chacune :
| A : Entreprise | B : Remise | C : NB commandes min |
Où A = la liste de toutes les entreprises
B = le coefficient de remise appliqué pour l'entreprise
C = le nombre de commande par semaine à partir duquel est
appliquée la
remise

Soit dans une deuxième feuille nommée ''Commandes'', toutes les
commandes
passées (chaque ligne représente une commande) :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E :
Remise | F : Montant facturé | et d'autres variables hors de sujet pour
le
présent problème.
Où A = le numéro de la semaine au cours de laquelle la commande
est passée
B = le nom du client
C = le nom de l'entreprise dont il fait partie
D = le montant de la commande avant remise
E = le coefficient de remise, différent d'une entreprise à
l'autre. Cette
valeur est récupérée dans la feuille ''Entreprises'' par
la fonction
suivante : =INDEX(Entreprises!B:B;EQUIV(Commandes!C1110;Entreprises!A:A;0)).
F = le montant total facturé (produit D*E)

______________________________
VOICI MAINTENANT LA QUESTION.

On souhaite donc que, si le nombre de commandes pour une même entreprise,
la
même semaine, est supérieur ou égal au nombre minimum
requis, la remise soit
alors appliquée ; sinon, qu'aucune remise ne soit appliquée.

Par exemple, l'entreprise TOTO a une remise de 3% à partir de 10
commandes
passées la même semaine, l'entreprise MAMA a une remise de 5%
à partir de 5
commandes passées la même semaine.

Soit, dans la feuille ''Entreprises'' les infos suivantes :
| A : Entreprise | B : Remise | C : NB commandes min |
| TOTO | 0,97 | 10 |
| MAMA | 0,95 | 5 |

Dans la feuille ''Commandes'', on souhaite le processus suivant :
. si le nombre d'occurrence d'une entreprise pour la même semaine est
supérieur ou égal à la valeur en C (NB commandes min) dans
la feuille
''Entreprises'', (= si le nombre de commandes dans l'entreprise TOTO est
supérieur ou égal à 10) ;
. alors la valeur renvoyée en E (Remise) dans la feuille ''Commandes''
doit
être la valeur en B (Remise) de la feuille ''Entreprises'', (= alors le
coefficient de remise doit être de 0,97) ;
. sinon, la valeur renvoyée doit être égale à 1 (pas
de remise), (= sinon,
le coefficient de remise doit être de 1).

Soit le résultat attendu dans la feuille ''Commandes'' :
| A : Semaine | B : Nom client | C : Entreprise |D : Montant commande | E :
Remise | F : Montant TTC facturé |
[.]
| sem 5 | Michel B | TOTO | 20,00 ? | 1 | 20,00?
| sem 5 | Anne A | TOTO | 18,00 ? | 1 |18,00?
| sem 5 | Laurent R | TOTO | 10,00 ? | 1 |10,00?
| sem 5 | Bernard C | TOTO | 14,00 ? | 1 |14,00?
| sem 5 | Julie B | TOTO | 13,00 ? | 1 |13,00?
| sem 5 | David T | TOTO | 17,00 ? | 1 |17,00?
| sem 5 | Paul G | TOTO | 20,00 ? | 1 |20 ,00?
| sem 5 | Max E | TOTO | 43,00 ? | 1 |43,00?
| sem 5 | Thierry S | TOTO | 15,00 ? | 1 |15,00?
| sem 5 | Michel Z | MAMA | 30,00 ? | 0,95 |28,50?
| sem 5 | Jeanne A | MAMA | 17,00 ? | 0,95 |16,15?
| sem 5 | Mireille R | MAMA | 20,00 ? | 0,95 |19,00?
| sem 5 | Jean U | MAMA | 15,00 ? | 0,95 |14,25?
| sem 5 | Christophe S | MAMA | 20,00 ? | 0,95 |19,00
| sem 5 | Jojo B | MAMA | 12,00 ? | 0,95 |11,40?
| sem 5 | Rachid Z | MAMA | 22,00 ? | 0,95 |20,90?
[.]

Dans l'exemple ci-dessus, on a bien :
. Pour l'entreprise TOTO, 9 commandes ont été passées la
semaine 5 alors que
le nombre minimum pour une remise est de 10. La valeur renvoyée en E
doit
donc être « 1 » (pas de remise).
. Pour l'entreprise MAMA, 7 commandes ont été passées la
semaine 5 alors que
le nombre minimum pour une remise est de 5. La valeur renvoyée en E
doit
donc être 0,95 (une remise de 5% doit être appliquée).
Dans l'état actuel du fichier, la remise est appliquée par
défaut sans tenir
compte du nombre de commandes passées.

J'espère que tout est clair car j'avoue que les choses ne sont pas
simples à
formuler.
Merci de votre aide pour résoudre le problème ou, pour le moins,
m'orienter
vers des pistes possibles.


Bonjour

Posons le problème 2 CAS
- Nb de commandes pas suffisant pour la remise alors 1
- Nb de commandes suffisant pour avoir la remise 0,95 ou 0,97

Attention : TOTO nb de commandes < 10 en semaines 4 et 5

Il faut refaire un tableau des remises avec colonnes A,B et C
- colonne A => les entreprises ( TOTO , TATA, MAMA.)
- colonne B => le nombre de commandes minimum pr la remise
- colonne C => les remises 0,95 ou 0,97 sinon 1 si pas de remise

syntaxe
=SI(NB.SI($A$2:$A$40;A2)>=INDEX(ENTREPRISE;EQUIV(Commandes!D2;Entreprises2!$A$2:$A$7;0);2);INDEX(ENTREPRISE;EQUIV(Commandes!D2;Entreprises2!$A$2:$A$7;0);3);1)

SI(NB.SI($A$2:$A$40;A2) permet de dédoublonner les mêmes entreprises ( TOTO par ex ) qui commandent plusieurs semaines ( semaines 4 et 5 )

SI(NB.SI($A$2:$A$40;A2)>=INDEX(ENTREPRISE;EQUIV(Commandes!D2;Entreprises2!$A$2:$A$7;0);2) veut dire que si une même semaine , une même entreprise a le nombre de commandes suffisant pour avoir la remise promise en colonne B du tableau ( 2eme colonne )

INDEX(ENTREPRISE;EQUIV(Commandes!D2;Entreprises2!$A$2:$A$7;0);3);1) => alors si cette condition est remplie alors on applique la remise de la colonne C ( 3ème colonne ) sinon on met 1

un peu long mais efficace
Publicité
Poster une réponse
Anonyme