Suppression de doublon en fonction de la valeur d'une autre colonne

Bonjour à tous,

Je suis en train de développer un outil permettant la récupération de plusieurs fichiers excel dans un dossier, afin d'ensuite extraire plusieurs informations de ces fichiers.

Ces fichiers correspondent à des rapports sur différentes pièces. Pour une même pièce, il est possible d'avoir une multitude de fichier, avec des numéros de révision différents.

Afin de récupérer uniquement la dernière révision pour une pièce, je suis en train de développer une macro qui me supprime les doublons pour lesquelles il existe une révision supérieur. J'ai en revanche du mal à mettre au point cette macro...

Le chemin que j'ai réalisé pour l'instant est celui-ci :

- Avec 2 boucles différentes, je récupère la référence du composant en cellule (i,2) et en cellule (j,2), avec j = i + 1 et 2 correspondant a ma colonne B contenant mes références de pièces,

- si les référence sont les mêmes, je compare le numéro de la révision en cellule (i,3) et en cellule (j,3), 3 correspondant à ma colonne C,

- si le numéro de révision en cellule(i,3) et inférieur au numéro de révision en cellule(j,3), alors je supprime la ligne i en entière.

Mon problème ici est que ma macro ne fait "qu'à moitié" le travaille car à la fin, je me retrouve quand même avec plusieurs révision pour une même pièce...

De plus, il est possible que pour une même pièce, il est plusieurs fois la même révision. Je souhaiterais dans ces cas la garder tout les fichiers.

Exemple: Pour la pièce NHA29587, je souhaiterais garder tout les fichiers à la révision 27, cette révision étant la plus haute.

Je joins mon fichier à mon message.

Merci d'avance pour vos retour !

Bonjour,
Une proposition Power Query, sans VBA !?
Cdlt.

Bonjour Jean-Eric,

Merci pour ta réponse !

Malheureusement Power Query ne fera pas l'affaire...

J'ai transmis ici uniquement un sample de mes données ainsi que le code que j'ai commencé pour réaliser cette suppression de doublon, mais en réalité, mon outil est bien plus vaste. Avec plusieurs macro, je peux : sélectionner un dossier dans lequel se trouve les fichiers que je souhaite récupérer, les extraire, ouvrir chacun de ces fichiers pour extraire les données voulu, puis générer plusieurs TDC et GDC sur ces données, tout cela à partir d'une feuille sur laquelle se trouve plusieurs boutons pour lancer mes macro.

L'idée serait donc de procéder de la même manière pour trier ces doublons, ou la macro se lancerait avec un bouton. Ce trie interviendrait après avoir extrait les données de mes fichiers, car c'est à ce moment la que je récupère le numéro de révision du fichier, et ne serait donc qu'une partie d'un long processus d'extraction de données...

Au final, cet outil sera utilisé par de nombreuses personnes dans mon entreprise, et je ne peux donc pas procéder autrement qu'avec du VBA, dans l'optique de rester dans un processus totalement automatisé.

En revanche, le résultat que tu as obtenu me donne une autre idée de développement : est-il possible d'obtenir le même tableau avec du code VBA, avec donc pour chaque référence la révision max, pour ensuite comparer chaque référence sur ma feuille à celle dans le tableau et supprimé celle qui ne sont pas à la bonne révision ?

Cdlt.

Re,
Une autre proposition avec formules (Excel 365 et +).
A te relire.
Cdlt.

Bonjour

Bonjour à tous

Une variante VBA

Bye !

Bonjour gmb,

Merci pour ta réponse.

J'ai une erreur "un composant activeX ne peut pas créer d'objet".

Re,
Une dernière proposition, avec VBA, toujours pour Excel 365 et +.
Pour le fun !
Cdlt.

Sub CreateTableWithoutDuplicates()
Dim lo As ListObject, lo2 As ListObject

    Set lo = Range("t_data").ListObject
    Set lo2 = Range("t_résultat").ListObject

    With lo2
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        .Unlist
    End With

    With Worksheets("Résultat VBA")
        .Cells(1).CurrentRegion.Resize(2).Style = "Normal"
        .Cells(2, 2).Formula2R1C1 = "=SORT(UNIQUE(t_data[Component_Ref]))"
        .Cells(2, 1).Formula2R1C1 = "=XLOOKUP(RC[1]#,t_data[Component_Ref],t_data[Component_Name])"
        .Cells(2, 3).Formula2R1C1 = "=MAXIFS(t_data[Revision_Number],t_data[Component_Ref],RC[-1]#)"
        .Cells(1).CurrentRegion.Value = .Cells(1).CurrentRegion.Value
        Set lo2 = .ListObjects.Add(xlSrcRange, .Cells(1).CurrentRegion, , xlYes)
        With lo2
            .Name = "t_résultat"
            .ShowTableStyleRowStripes = False
            .TableStyle = "TableStyleLight1"
        End With
    End With

End Sub

Re,

Pour le problème activeX, j'ai réussi à le régler avec de l'early binding

Merci beaucoup à vous deux ! Vos solutions fonctionnent très bien !

Je vais tenter d'adapter tout ca à mon code. Je reviendrais vers vous si besoin.

Bonne soirée !

Cdlt.

Rechercher des sujets similaires à "suppression doublon fonction valeur colonne"