Répartition proportionnelle

Bonjour à tous,

Je me permets de vous solliciter car je bloque sur un problème de répartition.

J'ai des clients qui me commandent des plateaux repas mais je ne peux pas honorer la totalité de leurs commandes. Je dois donc faire une répartition et retrancher des plateaux à chaque clients avec plusieurs contraintes:

  • Garder des nombres entiers.
  • Est-il possible de faire cette répartition proportionnellement à la commande de chaque client ?
  • Est-il possible, si la quantité de plateaux à supprimer le permet, de garantir au minimum un plateau par client ?
  • Enfin en si le volume à supprimer ne permet pas de garantir un plateau par client, peut-on favoriser en priorité les clients ayant le plus commandé ?

Je met un exemple en pièce-jointe.

Merci pour votre aide !

308repartition.xlsx (9.65 Ko)

Bonjour le forum,

Jeanvaljean a écrit :

- Est-il possible de faire cette répartition proportionnellement à la commande de chaque client ?

D2 :

=ARRONDI(DECALER(D2;-1;-1)*SOMME.SI(B:B;"A supprimer";C:C)/SOMME.SI(B:B;"Total commandé";C:C);0)

D18 & D37 : même formule (remplacer D2 par D18 & D37).

C6 :

=ARRONDI($D$2*B6/SOMME($B$6:$B$13);0)
a supprimer

bonjour

pour les 40 ;un essai.............

=SI(B6=1;0;ARRONDI.AU.MULTIPLE((B6/C$1)*C$2;1))

cordialement

Bonjour à tous,

Tout d’abord, un grand merci pour vos réponses !

@ mbbp : je ne suis pas sûr de comprendre ta solution, à quoi correspondrait le nombre en D2 du coup ? Au final je supprimerais moins que ce qu'il faut non ?

@ tulipe_4 : ça a l'air de fonctionner à première vue, je vais essayer de mettre en pratique !

bonjour

je me suis borné a un simple calcul de proportion

pour 3 au depart soit :3 56ieme donc si tu en supprimes 40 ;le "pro rata" sera :3 cinquante sixieme de 40 ;pour faire un compte rond ;on joue de l'ARRONDI et comme garde fou on evite de deshabiller celui qui n'en n'avait commandé qu'un

cordialement

Bonjour,

Salut Mbbp et Tulipe !

Je vous livre une proposition "complète" (je l'espère .... )

Formule en C6 à tirer vers le bas ensuite.

=SI(B6=1;0;ENT(B6*$C$2/$C$1))+SI(RANG(B6;B$6:B$13)+NB.SI(B$6:B6;B6)-1<=$C$2-SOMME(SI($B$6:$B$13=1;0;ENT($B$6:$B$13*$C$2/$C$1)));1;0)

ATTENTION : Formule matricielle à valider avec les touches Ctrl+Maj+Entrée

autre proposition sans calcul

une affichette annotée de :

"étant donné la longueur des frites ; il n'y aura pas de beef-steak "

Re !

tulipe_4 a écrit :

une affichette annotée de :

"étant donné la longueur des frites ; il n'y aura pas de beef-steak "

Que nenni ! J'opte pour la formule....complète !

Bonjour à tous,

La mise en pratique s'avère un peu plus délicate finalement Je m'explique :

La formule de tulip_4 fonctionne très bien dans les exemples, mais je me suis aperçu qu'en augmentant le nombre de clients, je ne supprimais plus assez de plats...

La formule de JFL fonctionne bien également en gardant le bon nombre de plats à supprimer mais il y a un petit problème dans la répartition. Il y a des cas où je dois supprimer 4 desserts sur 4 à un "gros" client, alors que je laisse un dessert sur un à un "petit".

Y'aurait-il un moyen d'équilibrer cela ? C'est à dire favoriser les grosses commandes dans les cas où le volume à supprimer ne peut pas garantir un plat par commande.

Enfin, je n'ai pas toujours réussi à appliquer la solution de Mbbp, je dois rater une étape.

Merci à vous, je peux développer mes explications si besoin !

Bonjour,

Jeanvaljean a écrit :

Y'aurait-il un moyen d'équilibrer cela ? C'est à dire favoriser les grosses commandes dans les cas où le volume à supprimer ne peut pas garantir un plat par commande.

La suite ce sera forcément en VBA, et là je laisse la place aux spécialistes !

A charge pour vous de fixer objectivement les contraintes, faute de quoi on pourra toujours dire que la solution présentée n'est pas "convenable".

Ex :

Jeanvaljean a écrit :

Il y a des cas où je dois supprimer 4 desserts sur 4 à un "gros" client, alors que je laisse un dessert sur un à un "petit".

Il faudrait en supprimer combien ? 3 pour en laisser 1 ? Dans ce cas serait-il équitable de mettre au même niveau une commande initiale de 4 et une autre de 1 ?

On peut, à l'infini, s'interroger....

D'accord, cela ce se complique un peu...

Pour reformuler peut-être plus simplement: la contrainte serait de garantir un plat par client lorsque le volume total à disposition le permet.

Sinon de répartir les manquants en fonction du volume commandé : mieux vaudrait laisser 1 plat /4 ou 2/4 à sur une grosse commande que de servir 1/1 à un petit. Peut-être faudrait-il déterminer un coefficient de répartition en fonction du volume de la commande?

Cordialement,

EDIT : une autre explication : mon but serait d'éviter au mieux les ruptures "sèches". Si rupture "sèche" il doit y avoir, je préfèrerais garantir un plat pour les grosses commandes que pour les petites.

Rechercher des sujets similaires à "repartition proportionnelle"