Suppression de Doublons avancée
Résolu
rEVOLV3r
Messages postés
223
Date d'inscription
Statut
Membre
Dernière intervention
-
rEVOLV3r Messages postés 223 Date d'inscription Statut Membre Dernière intervention -
rEVOLV3r Messages postés 223 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une liste assez grande comportant des données de la colonne C à AV. A coté de ces colonnes, il y a des formules de concaténation pour différents calculs, il ne faut donc pas toucher à ces colonnes.
Il est possible qu'en colonne AV, il y ait deux fois le meme nom ex: M000001-A2_8 et c'est sur cette colonne que j'aimerais regarder s'il existe des doublons du nom. Car en colonne I, le nombre de pièces peut varier pour le doublon des noms...
Cela vient du temps de la prise des données sur les machines. Les fichiers de données ne sont certaines fois pas encore remplis lorsque la macro vient les chercher. Il existe donc par exemple la ligne de donnée :
C: 123 pièces AV:M000001_A2-8
C: 150 pièces AV:M000001_A2-8
Il faudrait donc faire un test pour supprimer la ligne doublon du nom ayant le PLUS PETIT NOMBRE DE PIECES en colonne C.
J'ai déja réussi a trouver le doublons à l'aide de la macro :
sub doublons()
doublon = Range("AV65000").end(xlUp).value
if application.countIf(Range("AV2:AV" & Range("AV65000").end(xlUP).row),Doublon) > 1 Then
*ici je ne sais pas comment faire*
end if
end sub
J'espère avoir été clair. Et je sais que cette macro va surement être un léger challenge a relever pour vous ;-)
Je vous en remercie déjà !
Bonne journée
rEVOLV3r
J'ai une liste assez grande comportant des données de la colonne C à AV. A coté de ces colonnes, il y a des formules de concaténation pour différents calculs, il ne faut donc pas toucher à ces colonnes.
Il est possible qu'en colonne AV, il y ait deux fois le meme nom ex: M000001-A2_8 et c'est sur cette colonne que j'aimerais regarder s'il existe des doublons du nom. Car en colonne I, le nombre de pièces peut varier pour le doublon des noms...
Cela vient du temps de la prise des données sur les machines. Les fichiers de données ne sont certaines fois pas encore remplis lorsque la macro vient les chercher. Il existe donc par exemple la ligne de donnée :
C: 123 pièces AV:M000001_A2-8
C: 150 pièces AV:M000001_A2-8
Il faudrait donc faire un test pour supprimer la ligne doublon du nom ayant le PLUS PETIT NOMBRE DE PIECES en colonne C.
J'ai déja réussi a trouver le doublons à l'aide de la macro :
sub doublons()
doublon = Range("AV65000").end(xlUp).value
if application.countIf(Range("AV2:AV" & Range("AV65000").end(xlUP).row),Doublon) > 1 Then
*ici je ne sais pas comment faire*
end if
end sub
J'espère avoir été clair. Et je sais que cette macro va surement être un léger challenge a relever pour vous ;-)
Je vous en remercie déjà !
Bonne journée
rEVOLV3r
5 réponses
-
Bonjour,
Note je n'ai pas pris en compte votre dernier message.
Essayer cette procédure :Sub supprDoublonsColAV() Dim sh As Object, mondico As Object Dim a As Variant, i As Integer Application.ScreenUpdating = False Set sh = ActiveSheet i = 1 Set mondico = CreateObject("Scripting.Dictionary") Do While i < sh.Cells(Rows.Count, "AV").End(xlUp).Row temp = Cells(i, "AV") If Not mondico.exists(temp) Then mondico.Add temp, i i = i + 1 Else For Each d In mondico.keys If d = temp Then nulip = mondico.Item(d) Exit For End If Next d If sh.Cells(nulip, 3) > sh.Cells(i, 3) Then Rows(i).Delete Shift:=xlUp Else Rows(i).Copy Rows(nulip) Rows(i).Delete Shift:=xlUp End If End If Loop Set sh = Nothing Set mondico = Nothing Application.ScreenUpdating = True End Sub
-
Bonjour,
Question, si plus de 2 valeurs identique en [AV] qu'elle valeur prendre pour [C] ... ?
-
Bonjour Le Pingou,
Alors il faudrait qu'après la suppression des doublons, la plus grande valeur reste en C, car elle représente un nombre de pièces mesurées.
Mais il va être très rare, mais pas impossible, qu'il y ait plus que deux doublons. Comme dis plus haut, on supprime ceux qui ont les plus petites valeurs en C.
Merci beaucoup,
Amicalement,
rEVOLV3r
-
-
Bonjour,
Merci pour l'information, ma proposition dans la journée.
-
Bonjour,
Petite question, est-ce que l'on peut supprimer le doublon et on prend la valeur maximum de [C] pour la ligne unique ... ?
Ou supprimer uniquement la ligne qui à la valeur minimum.... ?
-
-
-
Bonjour,
Je viens de modifier mon fichier Excel, il est possible de supprimer la ligne entière sans causer de soucis ! Ce qui vous simplifie bien la tâche je présume.
Les formules maintenant sont du genre :
=SI(B44<>"";SI(DROITE(E44;NBCAR(E44)-8)="A";"A";"B");"")
=SI(C44<>"";"_"&DROITE(G44;NBCAR(G44)-6);"")
=SI($B46<>"";TEXTE(C46;"jj.mm.aaaa");"")
Mais elles ne vont plus poser de soucis.
Merci beaucoup
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci Beaucoup !
Vous êtes un chef !
J'ai modifié votre macro pour mon application et tout fonctionne bien !
Encore merci !
Je vous souhaite une agréable journée,
rEVOLV3r