Aide au remboursement des commande monnaie [Résolu/Fermé]

Signaler
-
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
8 décembre 2019
-
Bonjour tout le monde

Voici ma question, je vais essayer d'être le plus clair possible. Je travaille en commerce, j'ai souvent besoin de rembourser en billet les commandes de monnaie que m'envoie la banque.

Je compte mon coffre grâce à des formules basique du genre:

valeur du billet*nombre de billet=valeur totale

par exemple

5 x 50 = 250
10 x 40 = 400
20 x 14 = 280
50 x 16 = 800
100 x 0 = 0
200 x 0 = 0
500 x 0 = 0

total du coffre = 1730

j'ai une commande monnaie de 870€ à rembourser:

je souhaiterai qu'excel me fasse une proposition de remboursement, afin qu'il me reste une quantité équilibrée de billet (à 2 ou 3 près)

par exemple:

"
aujourd'hui il est possible de rembourser votre commande de 870€:
40 billets de 5€
29 billets de 10€
6 billets de 50€
4 billets de 20€
"

Dans l'exemple il me resterai
10 billets de 5
11 billets de 10
10 billets de 20
10 billets de 50

Si jamais il n'y a pas assez de billets pour faire un remboursement de monnaie équilibré, alors excel ne me propose pas de commande.

Si c'est un travail long et fastidieux, n'hésitez pas à me dire vers quelle fonctionnalité je dois me diriger pour y arriver, je me débrouillerai, j'ai juste besoin de partir dans la bonne direction ;)

Bonne soirée

1 réponse

Messages postés
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
771
Bonjour,

voilà un exemple de solution par formule : http://www.cjoint.com/c/ELCdkk7LJjS

J'y ai mis également une version matricielle plus concise mais moins compréhensible.

Le détail est en colonne G:G
Les valeurs à saisir sont en jaune.
Il y a deux MFC qui gère les solutions insuffisamment régulières.

Je suis parti du calcul de la répartition du coffre-commande (1730-870=860 sur ton exemple) avec les billets contenus dans le coffre.
J'ai fait la somme des valeurs unitaires des billets du coffre de départ (5+10+20+50 soit 85)
J'en ai déduit qu'il fallait 10,12 et des poussières de cette somme de 85 pour faire les 860.
J'ai pris la partie entière, 10, ce qui permet d'atteindre 850.
Il manque 10 pour faire 860.
La table de répartition des delta indique que un écart de 10 est compensé par un ajout de 1 billet de 10. Cette table est modifiable car il y a plusieurs possibilité d'atteindre un delta. Je pense avoir choisi la plus optimale en terme de nombre de billets à ajouter.

A partir de là, il suffit d'ajouter 1 billet de 10 à la moyenne de 10 pour obtenir le résultat du nouveau coffre et, par soustraction, les nombres de billets à sortir pour la commande.

Je sais que cette solution risque d'être mise à mal dans les cas de coffres de départ peu "harmonieux" en quantité de billets.
C'est en tout cas une idée assez simple.

cordialement
Merci de t'être donné du mal, c'est parfait !!!

A bientôt
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
8 décembre 2019
334
Bonjour,
Génial cette solution ! Cependant, peux-tu m'éclaircir certains points des formules (la, j'ai découvert que je connaissais rien à excel ^^) :
  • comment a été calculée la répartition des billets selon Delta, à la main ou automatiquement ?
  • Comment on assigne un nom à une variable (ici, les matrices)
  • Que signifie
    (D3:D9<>0)
    dans
    =SOMMEPROD((D3:D9<>0)*C3:C9)
    ? (!= 0 ?)
  • Pourquoi certaines formules sont entre { } lorsqu'on passe le curseur-dessus mais ceux-ci disparaissent à l'édition de la formule ?

Merci d'avance de tes réponses...
JvDo
Messages postés
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
771 > Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
8 décembre 2019

Bonjour,

Répartition des billets selon Delta : à la main.
en fait, la séquence 5 à 95 se répète pour chaque centaine, donc c'est très rapide à faire.
J'ai préféré une table plutôt qu'un algorithme pour simplifier et offrit plus de souplesse.

nom à une variable : tout simplement via le ruban par l'onglet formules\définir un nom.
j'ai aussi souvent utilisé créer depuis sélection parce que c'est plus rapide.


(D3:D9<>0) dans =SOMMEPROD((D3:D9<>0)*C3:C9) : je voulais faire la somme des coupures présentes dans le coffre. il fallait donc éliminer les valeurs nulles. d'où le différent de zéro (<>0) pour D3:D9.

certaines formules sont entre { } : ce sont des formules matricielles. on les obtiens en sélectionnant une zone de cellules (I3:I9 dans mon modèle), en mettant la formule (
=(Nb_Billets<>0)*(Nb_Billets-(ENT((Total_en_coffre-Commande)/SOMMEPROD((Nb_Billets<>0)*Val_Billets))+TRANSPOSE(RECHERCHEV(Total_en_coffre-Commande-ENT((Total_en_coffre-Commande)/SOMMEPROD((Nb_Billets<>0)*Val_Billets))*SOMMEPROD((Nb_Billets<>0)*Val_Billets);table_delta_billets;TRANSPOSE({2;3;4;5;6;7;8});FAUX))))
) dans la zone d'édition (là où il y a le fx) et, pour finir, en validant par CTRL+MAJ+ENTER.

Les formules matricielles sont très puissantes; elles concentrent les calculs intermédiaires et simplifient la présentation du résultat, elles remplacent avantageusement (pour ceux qui ne connaissent pas VBA) des lignes de codes de macros mais elles ont l'inconvénient d'être difficile à comprendre et donc à maintenir et de devenir très consommatrices de ressources (processeur/mémoire).
le VBA reprends rapidement le pouvoir lorsqu'il y a beaucoup de données à traiter.

cordialement
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
8 décembre 2019
334
Merci d'avoir pris le temps d'écrire toutes ces explications :P