Suppression de Doublons avancée

Résolu/Fermé
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - Modifié par rEVOLV3r le 2/07/2013 à 12:38
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 4 juil. 2013 à 18:51
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
A voir également:

5 réponses

Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
3 juil. 2013 à 17:24
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

1
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
2 juil. 2013 à 21:46
Bonjour,
Question, si plus de 2 valeurs identique en [AV] qu'elle valeur prendre pour [C] ... ?

0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
3 juil. 2013 à 08:12
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
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
3 juil. 2013 à 10:05
Bonjour,
Merci pour l'information, ma proposition dans la journée.

0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
3 juil. 2013 à 11:11
Merci merci beaucoup !

J'essaie tant bien que mal de mon côté, mais j'avoue que mes solutions sont d'une extrême lenteur et ne fonctionnent pas à chaque fois...

Amicalement,
rEVOLV3r
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
3 juil. 2013 à 15:27
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.... ?

0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
3 juil. 2013 à 15:45
Bonjour,
Supprimer uniquement le Range(C & ligne_n° : AE & ligne_n°) lorsqu'elle est doublon d'une autre (et a une valeur C plus petite que l'autre), si cela est possible, car il y a des formules à coté des colonnes qui ne doivent pas être touchées.

Merci
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
3 juil. 2013 à 16:01
Bonjour,
Attention il y a une différence entre supprimer la ligne ou seulement la plage [Range(C & ligne_n° : AE & ligne_n°)], cette dernière laissera une plage vide... Est-bien cela...
Note mettez-moi une copie des formules mentionnées..!
Salutations.
Le Pingou
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
3 juil. 2013 à 17:22
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
4 juil. 2013 à 10:34
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
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
4 juil. 2013 à 11:19
Bonjour,
Merci et bonne semaine dans la région du cheval.... !
Salutations.
Le Pingou
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
4 juil. 2013 à 18:51
Bonsoir,
J'en mangerai un bout pour vous :-p
bonne soirée,
Peut-être à une prochaine sur le forum

rEVOLV3r
0