Menu

Besoin d'aide sur formule compliquée, voir une macro.. Help please ! [Résolu]

Messages postés
57
Date d'inscription
jeudi 1 mai 2014
Statut
Membre
Dernière intervention
3 avril 2019
- - Dernière réponse : ludodil62
Messages postés
57
Date d'inscription
jeudi 1 mai 2014
Statut
Membre
Dernière intervention
3 avril 2019
- 17 janv. 2019 à 21:47
Bonjour,

J’ai besoin d’un expert en Excel !

Je cherche à travailler sur le groupement de commande chez un client, et on souhaiterait leur donner une estimation du gain potentiel en coût de transport si ils groupaient leurs commandes avant de nous les envoyer.

Pour ça, je travaille sur le fichier en PJ. (extrait du fichier original qui fait 10 Mo.. )

Sur ce fichier, une ligne = une commande, un client.

On se dit que des commandes pourraient être groupées jusqu’à 4 jours après la ère commande (en date glissante). Passé 4 jours, le compteur doit redémarrer à la prochaine commande.

J’essaye d’illustrer un peu l’idée pour être plus clair dans l'onglet "exemple" de mon fichier.

Dans l'onglet données, j’ai numéroté les jours (date d’intégration) pour supprimer le pbl des samedi et dimanche dans le calcul des écarts entre les commandes. Par exemple, j’ai les jours de 1 à 5 pour aller du lundi au vendredi, et le 6ème jour et le lundi suivant, et ainsi de suite..

J’ai ensuite trié les données par code client et par n° de jour croissant.

Je voudrais en colonne N, un résultat qui affiche une valeur commune sur chaque ligne de commande regroupable. « A » et « B » dans mon exemple, et ceci par client (1 client une couleur dans le fichier)..

Comme ça je n’aurai plus qu’à faire une TCD pour additionner les poids et les colis par regroupement, et par client. Ça me permettrait de calculer un nouveau coût de transport, et donc de voir les éventuelles économies..

Mais pbl, je ne vois pas du tout comment avoir ce résultat…

Quelqu'un pour m'aider ?

D'avance merci pour votre aide.

Voici mon fichier : https://mon-partage.fr/f/NIrSqt3U/
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
580
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
15 juillet 2019
41
1
Merci
Bonjour,

Pourquoi A et pourquoi B ?

Cordialement.

Daniel

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 54171 internautes nous ont dit merci ce mois-ci

Commenter la réponse de danielc0
Messages postés
5333
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
27 juin 2019
321
0
Merci
Bonjour ludodil62

Pourquoi compliquer les choses !

Utiliser le numéro de semaine pour faire le regroupement

Mettre cette formule dans une colonne supplémentaire en prenant la date en colonne E ou L

=NO.SEMAINE(E2;21) ou =NO.SEMAINE(L2;21)

puis trier par numéro se semaine
Commenter la réponse de PHILOU10120
Messages postés
57
Date d'inscription
jeudi 1 mai 2014
Statut
Membre
Dernière intervention
3 avril 2019
1
0
Merci
Bonjour,

Daniel,

Ceux sont des exemples A et B. Si c'est plus simple de mettre 1 et 2, pourquoi pas. Et 0 sur les non regroupables par exemple. Le principal est d'avoir une valeur commune sur chacun des regroupement possible, mais une valeur différente par regroupement et par client.

Philou,

J'ai proposé de faire une analyse à la semaine, ça serait effectivement plus facile. Mais notre client ne veut pas malheureusement, je dois faire une analyse en jour glissant a partir de la 1ère commande et étendre la recherche sur 4 jours.. Au 5ème jour, le compteur doit repartir à 0.

Pas simple je te l'accorde !
Commenter la réponse de ludodil62
Messages postés
10811
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
15 juillet 2019
1332
0
Merci
Bonjour

Avec une macro
https://mon-partage.fr/f/1AA5VeuG/

Cdlmnt
Via
Commenter la réponse de via55
Messages postés
57
Date d'inscription
jeudi 1 mai 2014
Statut
Membre
Dernière intervention
3 avril 2019
1
0
Merci
Merci beaucoup via55 ! C'est exactement ce qu'il me fallait !

Je ne pensais pas que c'était possible. Il va falloir que je me mette au VBA, ça multiplie les possibilités !

Par contre je ne suis pas à l'abri que mon client demande ensuite la même analyse, sur 3 ou 5 jours d'intervalle par exemple.

Que devrais je changer dans ce code ?

Sub regrouper()
Dim Ligne As Long
Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Range("N4:N" & Ligne).ClearContents

For n = 4 To Ligne
If Range("C" & n) <> Range("C" & n - 1) Then x = Range("C" & n): cod = 64
If Range("M" & n + 1) - Range("M" & n) < 5 And Range("N" & n) = "" And Range("C" & n) = Range("C" & n + 1) Then
cod = cod + 1
Range("N" & n) = Chr(cod)
Range("N" & n + 1) = Chr(cod)
For y = 1 To 3
If Range("M" & n + 1 + y) - Range("M" & n) < 5 And Range("C" & n) = Range("C" & n + 1 + y) Then Range("N" & n + 1 + y) = Chr(cod)
Next
End If
Next

End Sub


En tout cas, encore un grand merci ! ça va bien m'aider.
Commenter la réponse de ludodil62
Messages postés
10811
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
15 juillet 2019
1332
0
Merci
Bien

Satisfait que cela te convienne

Ce sont d'abord les deux lignes où il y a Range("M" & n) < 5 qu'il faut modifier
le <5 conditionne une différence maximale de 4 jours, il suffit de le remplacer par 4 ou par 6

Ensuite le nombre de lignes en dessous de celle avec le 1er A ( ou le 1ere B..) étudiés dépend de la boucle For y = 1 To 3 (ici 3 lignes), si on augmente le nombre de jours il faut augmenter en conséquence le nombre de lignes prises en compte et donc remplacer 3 par 4, 5 ...

Cdlmnt
Via

Commenter la réponse de via55
Messages postés
57
Date d'inscription
jeudi 1 mai 2014
Statut
Membre
Dernière intervention
3 avril 2019
1
0
Merci
Très bien, c'est noté.

Merci pour cette aide précieuse apportée ! Je vais pourvoir aller plus loin dans mon analyse grâce à toi.

A une prochaine fois peut-être.

Bye !
Commenter la réponse de ludodil62