Discount sur commande mois précédent
Bonjour à tous,
Avant de commencer je tiens à remercier le forum et sa communauté. J'ai pu me débloquer de nombreuse fois rien qu'en vous lisant
J'en viens à ma problematique, je construit un fichier de gestion des commandes/stocks assez simple. Le fichier comprend 6 feuilles actuellement: un accueil, un annuaire de contacts (clients/fournisseurs), un annuaire produits, un stock automatise, une feuille mouvements et une feuille facture.
Dans ma feuille mouvement je souhaite appliquer une discount automatique à mes clients ayant achetés plus d'un certain montant le mois précédent. Il y a quelques subtilitées qui complique les choses:
- Le déclenchement de la reduction s'applique uniquement le mois suivant et une seule fois --> Si le client X a déppassé le montant le mois M il recevra la reduction sur sa commande Y en M+1 même s'il a une autre commande le même mois, si en M+1 il redeppasse le montant il recevra pas la reduction sur sa prochaine commande du mois mais encore une fois le mois suivant donc en M+2 etc
- Certains clients ont déjà une réduction de base, ils ne peuvent pas bénéficier de cette réduction ci. --> Leurs réductions sera intégrées dans le fichier via une formule Si.
- La feuille mouvement est dynamique, mes collaborateurs vont l'utiliser quand ils passent une commande. Je souhaite, si possible que la feuille comprenne d elle même quand l utilisateur change de mois, calcul automatiquement les clients ayant la discount et l applique une seule fois.
C est la principale difficultés, ne pas faire une analyse postérieur au mois manuellement je cherche quelque chose le plus simple d'utilisation possible, mes collaborateurs ne parlent pas français et pas forcement anglais non plus.
Je suis pas specialement doué en Excel et encore moins en VBA mais j'ai essayé quelques trucs sans reels solutions, je vous presente ci dessous mon etat d'avancement:
- Testé plusieurs formules comme MOIS.DECALER, SOMME.SI.ENS et une formule droite appliquée sur la date pour extraire le mois (la date est en format MM/JJ/AAAA)
- J'avais pensé a une maccro, balayant l ensemble des donnees et indiquant qu elle client aura la reduction et sur quel mois il a pu l obtenir. Je suis un peu moins a l'aise avec VBA je n ai jamais vraiment fait du codage
Je vous joint ci-dessous un exemple de fichier proche de l'actuel, si vous souhaitez plus de precisions, n'hesitez pas à me le demander
En espérant que le probléme vous interessera ,
Bonne journée !
Bonjour,
Ta feuille Mouvements est vide. Comment veux-tu qu'on puisse voir comment traiter tes données !
Il se posera par ailleurs certainement un problème lié au fait que tes dates en col. A de cette feuille ne sont pas des dates, mais du texte formaté en date au format américain...
Cordialement.
Bonjour MFerrand,
Merci pour cette réponse rapide !
Je viens de modifier le fichier du post, je l ai remplie de fausse informations pour rendre la problématique plus visuelle
Je joint des images ci-dessous pour détailler :
On peut voir que le montant déclenchant la discount est de 1500, le client x1 a déppassé ce montant dès sa premiére commande, il a donc le droit à une reduction de disons 10% le mois prochain (voir image 1)
Ce même mois il y a eu plusieurs autres clients ne remplissant pas les critres et même des fournisseurs pas concerne par la reduction
Le client X1 a également passé plusieurs commandes le même mois mais sa reduction ne s applique pas encore (voir image 2), le discount devra s appliquer automatiquement que pour la commande du 3 février (voir image 3)
« Il se posera par ailleurs certainement un problème lié au fait que tes dates en col. A de cette feuille ne sont pas des dates, mais du texte formaté en date au format américain...»
Tu veux dire car mes dates sont ecrites en version americaine avec le mois en premier ou car le format de la cellule est en texte et non date ?
Cordialement,
Tes dates sont des dates écrites en format américain.
Tes cellules sont au format Standard. Dans ce cas, lorsqu'une date est saisie, Excel fait basculer automatiquement le format dans l'un des formats date par défaut.
Ce n'est pas le cas parce que Excel ne reconnait pas tes dates comme dates, et les considère donc comme du texte.
Une date est un nombre et permet effectivement des calculs. Avec du texte pas question de calculer, il faut convertir d'abord...
Il faut voir quelle est la source du problème, et si possible le régler en amont.
Cordialement.
Merci pour ce retour, je comprend la problematique ! je vais travailler la dessus
En partant du principe que ce format date est regle, as-tu une idee pour le reste du probleme ?
Cordialement,
Dritch
Tu peux introduire une colonne de calcul du montant mois précédent, qui te permettra ensuite de servir ta colonne Discount.
Mettons base jusqu'en ligne n. Formule sur ligne x :
=SOMMEPROD(((ANNEE($A$3:$A$n)-2017)*12+MOIS($A$3:$A$n)-1=(ANNEE(Ax)-2017)*12+MOIS(Ax)-2)*($D$3:$D$n=Dx)*$K$3:$K$n)Cordialement.
Pourrais-tu m expliquer la formules, je ne suis pas sur d avoir compris car je narrive pas à l appliquer même apres avoir revu le format de ma premiere colonne en date
=SOMMEPROD(((ANNEE($A$3:$A$n)-2017)*12+MOIS($A$3:$A$n)-1=(ANNEE(Ax)-2017)*12+MOIS(Ax)-2)*($D$3:$D$n=Dx)*$K$3:$K$n)Si je comprend bien somme prod fait des produits de colonnes:
- ANNEE($A$3:$A$100)-2017 --- 1er critere sur ma plage date, calcule l annee et soustrait par 2017, ça donne 0 donc ?
- 12+MOIS($A$3:$A$100)-1=(ANNEE(A3)-2017)*12+MOIS(A3)-2) --- dans la selection ajoute 11 et selectionne uniquement le mois de la cellule + 10
- 12+MOIS(A3)-2 --- multiplie les 2 criteres precedent par le mois + 10
- $D$3:$D$100=D3 --- selectionne tous les clients correspondant à la cellule dans la plage
- $K$3:$K$100 --- plage correspondant aux total price
Faisant (Année-2017)*12 + Mois-1
Janvier 2017 => 0
Février 2017 => 1
Décembre 2017 => 11
Janvier 2018 => 12
On traduit donc chaque période mensuelle successive par un numéro dans une série continue...
Il y a deux critères à tester : le mois et le client. Donc sur chaque ligne on a pour la commande un RangMois et un NomClient : on va chercher sur l'ensemble de la base les lignes où le rang du mois est égal à RangMois-1 ET le nom du client égal à NomClient pour aditionner les montants correspondant à ces lignes.
Cela donnera sur chaque ligne le montant des commandes du mois précédent que tu pourras tester pour appliquer ou non une ristourne.
Cordialement.
En effet je comprend mieux, merci des precisions ! Une partie du probleme resolue
Je vais chercher un peu de mon côte pour la suite du probleme (appliquer la reduction une seule fois ) via ta piste, je reviens vers vous
Bonne journee !
Bonjour,
Je reviens vers vous car je ne trouve pas la solution au reste du probléme, avec l'aide ci-dessus il est possible d'extraire le total par client et par mois.
Le soucis est d'appliquer la discount une seule:
Je voulais partir sur une autre cellule "compteur", appliquer la discount quand le montant est supérieur et que le compteur est vide afin de l'appliquer une seule fois.
Cependant, le client peut recevoir d'autres discount pas en rapport avec celle de volume, cette méthode tombe donc à l'eau...
Auriez-vous une idée ?
Cordialement,
Bonjour,
Pas compris où se situe le problème. Il s'agissait d'appliquer une ristourne ou non en fonction des commandes du mois précédent.
A partir du moment où tu disposes des commandes du mois précédent, un simple test sur ce montant te permet de savoir si tu appliques ou non la ristourne sur les commandes du mois ! Et le faire.
S'il y a d'autres types de ristourne, tu les calcules indépendamment... Et tu dois pouvoir cumuler tous ces calculs dans la même cellule, en principe.
Cordialement.
Le soucis se situe dans l'application de la ristourne justement, elle ne doit s'appliquer qu'une fois par mois.
Avec les informations données je connais le montant client du mois précédent mais avec un test sur ce montant, sauf erreur de ma part, ça appliquerai la ristourne à chaque fois dans le mois alors que je ne le souhaite qu'une fois
Cordialement,
Un client à commandé 2000 euros le mois précédent.
Ce mois il fait une première commande de 10 euros => ristourne (c'est royal !)
Il fait une seconde commande de 2500 euros => pas de ristourne !!
Autre cas il fait une commande de 2000 euros => ristourne...
Une seconde commande le 31 : 1500 euros => pas ristourne !
Un jour plus tard, le 1er : ristourne sur mois précédent qui a changé...
Ce qu'il faut pour inciter le client à différer ses commandes pour pouvoir les concentrer ou les décaler plus opportunément pour lui (ou trouver un autre fournisseur dont les pratiques lui seraient plus bénéfiques...)