XL 2016 Macro-vba: Fusionner les doublons en prenant la valeur la + haute d'une certaine colonne

btrn

XLDnaute Nouveau
Oulala le titre est long désolé :(
(Attendez de voir le contenu xD)

Bonjour (bonsoir) à tout le monde !
Voila cela fait quelques temps que je cherche sur le forum la réponse à la question que je me pose et j'ai pu voir quelques réponses sympathiques mais je n'arrive toujours pas à mettre en forme au niveau du code ce que je souhaite faire.

Je vous explique:

J'ai un fichier (ci joint) "Liste-a-trier" qui contient une liste de pièces qui sont parfois en double (voir en triple et +..).
J'ai fait une macro (enfin j'ai repris le code de quelqu'un que j'ai adapté à mon besoin) qui supprime les valeurs en doubles en triples etc ..

Maintenant le problème:
J'ai une colonne qui s'appelle EyePeak (colonne 'F') qui prend la valeur '2' lorsque la pièce à été vu dans un autre programme ..

Le seul problème que j'ai c'est que la macro ne fonctionne pas quand j'ai deux lignes "Presque pareil" comme ceci:

EL012-17-L100X10-CD001-R00 | PENDING | EL012-17 | mercredi 22 mars 2017 | 2
EL012-17-L100x10-CD001-R00 | PENDING | EL012-17 | jeudi 23 février 2017 |

Remarquez que la 2e ligne à une date différente et que dans sa colonne 'F' il ne comporte pas de deux..



j'aimerais que ma macro puisse avoir une condition qui dit 'si deux références de piece (colonne A) sont pareils MAIS que la date est différente, ALORS on fusionne en gardant la date la plus récente ET on garde la valeur '2' de la colonne 'F' SI au moins une des deux lignes contient bien '2' dans la colonne 'F'

De plus, lors du lancement de ma macro actuelle parfois je me retrouve avec des ################# à la place de la date quand les cellules fusionnes.. si vous arrivez à comprendre pourquoi je veux bien savoir Oo

Ho punaise le pavé.. désolé mais je suis perdu :s
Ça fait un sacré exercice en VBA si il y a des challengers parmi nous ? :D
 

Pièces jointes

  • Liste-a-trier.xlsm
    29.4 KB · Affichages: 81

Dranreb

XLDnaute Barbatruc
Bonsoir
Il me semble qu'il vaudrait mieux, juste à l'inverse de ce que vous avez fait, classer sur toutes les colonnes sauf la F pour avoir ensembles les pièces pouvant être en double, explorer chaque paquet pour voir l'un d'eux porte 2 en F et si oui retenir le dernier (date la plus récente)
 

btrn

XLDnaute Nouveau
Bonjour, merci de votre réponse
J'essaye de mettre en pratique votre façon de voir le probleme qui me semble être une bonne approche :)
Néanmoins je rencontre quelques soucis cote code je n'arrive pas a faire fonctionner mon nouveau code ..

Do While Not IsEmpty(ActiveCell) ' Tant que la cellule active n'est pas vide, recommence

If ActiveCell = ActiveCell.Offset(-1, 0) Or (ActiveCell = ActiveCell.Offset(-1, 0) And ActiveCell.Offset(0, 3) <> ActiveCell.Offset(0, 3)) Then
ActiveCell.EntireRow.Delete ' la cellule précédente (mme colonne), supprime
Else: ActiveCell.Offset(1, 0).Select 'toute la ligne. Sinon, passe ˆ la cellule suivante.

End If
Loop


merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il n'est pas souhaitable de travailler directement sur les cellules. C'est lent.
Il vaut mieux tout charger dans un tableau en une seule instruction, produire le résultat dans un autre tableau et le décharger en une fois aussi à la fin.
Si ça vous intéresse j'ai une fonction Gigogne qui charge tout dans une collection qu'elle renvoie. Vous n'aurez même plus besoin de vérifier si on change de pièce: il vous mettra toutes les occurrences de chaque pièce dans un même membre. Ces membres ont une structure très simple leur permettant de contenir à leurs tours d'autres collections, emboitées comme des gigognes. On les explore par des boucles For Each In imbriquées.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Voyez voir si ça convient. Je verse le résultat à partir de la cellule I4 provisoirement pour Comparer avec l'original. Attention la référence à GigIdx est à décocher puis, une fois GigIdx installé, recocher.
 

Pièces jointes

  • GigogneBtrn.xlsm
    35.7 KB · Affichages: 82
  • GigIdx.xlsm
    64.3 KB · Affichages: 59

Discussions similaires

Réponses
2
Affichages
255
Réponses
5
Affichages
226
Réponses
6
Affichages
279