XL 2013 Supprimer doublon mais pas tous en conservant la dernière date

Marjo2

XLDnaute Occasionnel
Bonjour,
- Je conserve l'onglet "EXPORT"
- Dans l'onglet "RESULTAT1", je dois supprimer les doublons de la colonne D (Code+CC) en conservant la dernière date (colonne J) mais en conservant une ligne de chaque type (colonne K) (ils existent 4 types mais ne seront pas forcément utilisés les 4 sur un même code)
- Dans l'onglet "RESULTAT2", je mets le résultat de la formule :
si "Genre Mvt" (colonne K) = "E" ou "C" alors conserver la ligne la plus récente des 2 et ajouter en colonne Q "Date de dernier mouvement"
si "Genre Mvt" (colonne K) = "R" ou "F" alors conserver la ligne la plus récente des 2 et ajouter en colonne Q "Date de dernière entrée"

Vu le nombre de ligne, j'opterai pour un VBA.
Est-ce que l'un d'entre vous serez m'aider ?
 

Pièces jointes

  • TEST STOCK.xlsx
    4.2 MB · Affichages: 26

Marjo2

XLDnaute Occasionnel
Merci,
Le résultat dans la table 3 est presque bon. Il faudrait que les doublons soient à nouveau supprimer pour ne pas valoriser en double (donc garder la date la plus récente)
La formule c'est si la date de dernière entrée à + d'un an et que le dernier mouvement à + de 11 mois alors c'est un stock mort
Si la date de dernière entrée à - d'un an et que le dernier mouvement à plus de 3 mois alors c'est un stock dormant.
 

Pièces jointes

  • TEST STOCK 5.xlsm
    2.9 MB · Affichages: 21

vgendron

XLDnaute Barbatruc
Le résultat dans la table 3 est presque bon. Il faudrait que les doublons soient à nouveau supprimer pour ne pas valoriser en double (donc garder la date la plus récente)
La formule c'est si la date de dernière entrée à + d'un an et que le dernier mouvement à + de 11 mois alors c'est un stock mort
Si la date de dernière entrée à - d'un an et que le dernier mouvement à plus de 3 mois alors c'est un stock dormant.

Dans la feuille "Result2"
pour chaque code CC (colonne D) on a forcément DEUX lignes: la première = Date de dernier mouvement et la seconde=Dernière entrée ???

du coup le test pour savoir si c'est un stock mort ou dormant se fait en tenant compte des deux lignes..?
 

Marjo2

XLDnaute Occasionnel
Non il n'y a pas forcément 2 lignes, car on peut avoir réceptionné du stock qui n'aura jamais mouvementé.

Le Result1 c'est on garde la date la plus récente par rapport à 4 genres de mouvements
Le Result2 on dit s'il s'agit d'une date de dernier mouvement ou une date de dernière entrée en stock
Le Result3 on dit s'il s'agit d'un stock mort ou dormant :
Si + d'un an et que le dernier mouvement à + de 11 mois alors c'est un stock mort
Si la date de dernière entrée à - d'un an et que le dernier mouvement à plus de 3 mois alors c'est un stock dormant.
Effectivement ajouté que si l'article n'a pas les 2 dates mais qu'une des 2 alors il va répondre au même condition (exemple
4103000350400RL C01000 sauf qu'il faut mettre une date plus ancienne)
Le Result4 on dit qu'on ne veut pas de doublon en gardant la date la plus récente ainsi ça ne valorise pas en double.
 

Marjo2

XLDnaute Occasionnel
Dans résult2 on affecte à chaque genre si c’est une entrée ou une sortie. Comme il y a 2 possibilité d’entree On conserve la plus récente et comme il y a 2 possibilité de sortie on conserve la plus récente des 2.
Effectivement si la ligne a déjà une affection parce qu’elle est toute seule faut la garder

Est ce que j’ai bien compris ta question ?
 

vgendron

XLDnaute Barbatruc
Dans résult2 on affecte à chaque genre si c’est une entrée ou une sortie. Comme il y a 2 possibilité d’entree On conserve la plus récente et comme il y a 2 possibilité de sortie on conserve la plus récente des 2.

une entrée = Mvt F ou Mvt R ==> on garde la plus récente
une sortie =Mvt C ou Mvt E ==> on garde la plus récente

donc.. une fois que le Result2 est rempli on a pour chaque codeCC, Une seule entrée et UNE seule sortie (ou juste une entrée, ou juste une sortie)
==> une ligne c'est SOIT le dernier mouvement SOIT la dernière entrée.. pas les deux en meme temps.
==> normalement; la Feuille Result2 est OK ==> Correct?


maintenant.. pour remplir la feuille Result3 , en fait, c'est pas très clair
les conditions que tu donnes sont:

Si + d'un an et que le dernier mouvement à + de 11 mois alors c'est un stock mort
si je dois tester les lignes UNE par UNE.. il y a un problème dans ce test:
si + d'un an.. (la date en colonne I?)
ET dernier mouvement +11 mois
==> la colonne AB étant forcément soit "Dernier mvt" soit "dernière entrée), le test ne sera bon qu'une fois sur deux
et finalement ca revient à tester sir date >1an ET date>11 mois ===>1 an ou 11 mois....??

Si la date de dernière entrée à - d'un an et que le dernier mouvement à plus de 3 mois alors c'est un stock dormant.
si je teste les lignes UNE par UNE==> ce test sera toujours faut.. puisque (encore une fois), c'set soit un mvt soit une entrée..

==> d'ou ma question: peut etre faut il regarder les DEUX lignes d'un code (la première étant le Mvt, la seconde étant l'entrée) ?

dans la PJ
peux tu me donner un exemple pour un stock mort et un stock dormant?


Code: 4019000403501700n C00080 (ligne 262 en vert)
il n'y a QUE le dernier mouvement (en ligne 263 c'est un nouveau code)===> je suppose qu'on garde la ligne 262, puisqu'elle est toute seule..??
 

Pièces jointes

  • TEST STOCK 5 (1).xlsm
    2.1 MB · Affichages: 15

Marjo2

XLDnaute Occasionnel
Le Result2 c'est ok si l'article a eu des entrées et des sorties, il faut bien garder 1 seule entrée et une seule sortie. Si l'article n'a pas de doublon il faut également l'affecter à "date de dernier mouvement" ou "date de dernière entrée"

Dans Result3, il reste pour 1 code, 1 ligne de date de dernier mouvement et 1 ligne de date de dernière entrée (voir peut être qu'un seul type de mouvement)
Stock mort = (la colonne AB = Date de dernière entrée et que ça date en colonne J est supérieur à 1 an) + (la colonne AB = Date de dernier mouvement et que ça date en colonne J est supérieur à 11 mois) = les 2 conditions réunions qui vont donner le stock mort
Exemple article 400350150600n C00300 : date de dernier entrée 28/02/2017 et date de dernier mouvement 07/06/2017 (ligne en bleu)

Stock dormant = (la colonne AB = Date de dernière entrée et que ça date en colonne J est inférieur à 1 an) + (la colonne AB = Date de dernier mouvement et que ça date en colonne J est supérieur à 3 mois) = les 2 conditions réunions qui vont donner le stock dormant
Exemple article 102000060ASNGL R00420 date de dernière entrée le 29/01/2018 et date de dernier mouvement 19/01/2018 (ligne en orange)

Donc oui il faut regarder les 2 lignes d'un même article.

Par contre il faut aussi rajouter la condition que si l'article n'est pas en doublon, alors regarder si la date de dernier mouvement ou de dernière entrée est > à 1an = stock mort
Par contre il faut aussi rajouter la condition que si l'article n'est pas en doublon, alors regarder si la date de dernier mouvement ou de dernière entrée est > à 3mois = stock dormant

Code: 4019000403501700n C00080 (ligne 262 en vert)
il n'y a QUE le dernier mouvement (en ligne 263 c'est un nouveau code)===> je suppose qu'on garde la ligne 262, puisqu'elle est toute seule..?? Exact

En result4, enlever tous les doublons pour ne conserver qu'une ligne pour valoriser
 

Pièces jointes

  • TEST STOCK 5 (1).xlsm
    2 MB · Affichages: 15

vgendron

XLDnaute Barbatruc
Voir PJ
dans la feuille result3, je retrouve bien les lignes surlignées (Orange, Bleu et Vert) de la feuille result2

par contre. en Feuille result3: il n'y a déjà plus de doublon.. ==> pas besoin de la feuille Result4.. ou alors. il y a encore quelque chose qui m'échappe..
 

Pièces jointes

  • TEST STOCK Rev6.xlsm
    2.1 MB · Affichages: 17

Marjo2

XLDnaute Occasionnel
Si tu as dit qu'il fallait garder la date la plus récente entre les 2 lors du renvoie de réponse de la formule, ça me paraît être bon. Je continuer de vérifier.

Est-ce qu'il est possible de garder tout ce raisonnement et de le faire par dépôt (colonne K), pour chaque dépôt je garde le E, C, R, F le plus récent puis je dis s'il s'agit d'un dernier mouv ou d'une dernière entrée et pour finir s'il s'agit d'un stock mort ou dormant ou qui tourne ?
 

Marjo2

XLDnaute Occasionnel
J'ai fait un nouvel export et il y a deux erreurs.
- S'il y a eu que des mouvements de R alors même avec des dates au 01/06/2018 ça écrit stock mort exemple : K70648080S.
- J'ai un article 4104001001700RL C00250 dont la date de dernier mouvement est 24/11/2016 et il écrit stock dormant. Il s'agit bien d'un stock dormant mais il faudrait dans Result3, prendre en compte la dernière date qui est le 11/01/2018
 

Pièces jointes

  • TEST STOCK Sans dépôt.xlsm
    5.9 MB · Affichages: 10

vgendron

XLDnaute Barbatruc
Correction ci jointe

Pour le code "K70648080S", je ne vois pas le souci....
dans la feuille Export: il n'y a QUE des codes R (en vert de ligne 55761 à 55778)
==> en feuille Result1 ==> 1 seule ligne. la plus récente (01/06/2018)
==> en feuille Result2==> toujours la meme ligne en tant que dernière entrée
==> en feuille Result3==> toujours la meme ligne en Stock Mort (plus d'un an)

toi tu as surligné en orange dans la feuille Result3(2) deux lignes. mais pas le meme code... K70648080S et K70648020S

pour le code 4104001001700RL C00250, j'ai corrigé pour garder le plus récent (je gardais juste la ligne qui répondait aux conditions)
 

Pièces jointes

  • TEST STOCK Sans dépôt Rev2.xlsm
    6.3 MB · Affichages: 12

vgendron

XLDnaute Barbatruc
ah oui.. erreur de comparaison.. je crois
regarde le code, j'y ai mis des commentaires pour chaque ligne de code.. ca te permettra de comprendre et de voir s'il y a encore des erreurs
 

Pièces jointes

  • TEST STOCK Sans dépôt Rev3.xlsm
    6.3 MB · Affichages: 18

Marjo2

XLDnaute Occasionnel
J'adore ta pédagogie, je te remercie énormément. Je vais bien étudier tes macros et me permettra de monter un autre projet de ce type.
J'ai compris l'erreur : si le mvt (ou entrée) date de MOINS de 3 mois alors stock dormant mais c'est pas -3 qui faut mettre mais 3 c'est pour les PLUS de 3 mois. Idem c'est 12 et non -12

Est-ce qu'il est possible de garder tout ce raisonnement et de le faire par dépôt (colonne K), pour chaque dépôt (les stocks que j'ai a différent endroit) je garde le E, C, R, F le plus récent puis je dis s'il s'agit d'un dernier mouv ou d'une dernière entrée et pour finir s'il s'agit d'un stock mort ou dormant ou qui tourne ?
 

vgendron

XLDnaute Barbatruc
non attention. le -3 et -12, c'est par rapport à la date d'aujourd'hui..
la fonction Edate, c'est la fonction Mois.decaler
Date, c'est la date du jour

en fait. je fais . aujourdhui - 12 mois.. (=>28/06/2017)
si 28/06/2017 > date mouvement==> ca veut dire que le mouvement est de PLUS de 12 mois...
si 28/06/2017 < date mouvement==> ca veut dire que le mouvement est de MOINS de 12 mois...
 

Discussions similaires

Réponses
22
Affichages
779
Réponses
26
Affichages
874

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg