Suppression de doublons ou occurrences

Bonjour à tous,

Je dispose de plusieurs fichiers sur les lesquels j'effectue des traitements de données. Je bloque à une dernière étape dans la mise au point de l'application VBA.

Je vous ai fait exposé le problème dans un fichier joint pour faciliter la compréhension.

Je voudrais supprimer les occurrences ou doublons. Pour cela, j'utilise la fonction :

workbooks(...).sheets(...).range("A1:D"&Rows.count).removeDuplicates Columns:=3

Cela fonctionne mais il y a 3 cas de figure. Je les ai représentés en couleur dans le fichier pour vous.

Voici l'algorithme :

Si 2 lignes avec 2 "Nom" identiques et 2 "UAI" identiques alors suppression doublons pour ne garder qu'une ligne (cas des lignes 23 à 26 et 29 à 31)

Si 2 lignes avec 2 "Nom" identiques et 2 "UAI" distincts alors suppression doublons pour garder 2 lignes avec les UAI distincts(cas des lignes 13 à 22)

Si 2 lignes avec 2 "Nom" distincts et 2 "UAI" identiques alors suppression doublons pour garder 2 lignes avec les noms distincts (cas des lignes 2, 3, 8, 9, 10, 12)

Il faut jouer sur le paramètres "Columns" mais j'aimerais que cela se fasse automatiquement.

J'ai essayé par imbrication de boucles mais cela augmente le temps d'exécution du programme VBA.

Je voudrais me passer des boucles d'où l'intérêt d'une fonction comme celle ci-dessus. Mais je n'ai pas encore trouvé la solution malgré mes efforts. J'essaie avec une boucle seulement mais je ne pense trouver.

Avez-vous une idée ?

Merci de votre aide...

16demo.xlsx (10.54 Ko)

Hello

Petite astuce tu concatenes dans une nouvelle colonne le nom et l’UAI.

Ça permettra de faire ton remove duplicates.

Je ne peux pas ouvrir ton Excel donc voici un exemple de code.

Sub SupprimerDoublonsUAI()

    Dim ws As Worksheet
    Dim lastRow As Long

    Set ws = ThisWorkbook.Sheets("Feuil1") ' À adapter
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 1. Créer colonne auxiliaire avec clé "Nom|UAI"
    ws.Range("E1").Value = "CleUnique"
    ws.Range("E2:E" & lastRow).FormulaR1C1 = "=RC[-3] & ""|"" & RC[-1]"

    ' 2. Supprimer les doublons sur la colonne auxiliaire
    ws.Range("A1:E" & lastRow).RemoveDuplicates Columns:=5, Header:=xlYes

    ' 3. Supprimer la colonne auxiliaire
    ws.Columns("E").Delete

End Sub

@+

bonjour Aphrodite, salut Baroute78,

autre possibilité

    Sheets("Feuil1").Range("A1").CurrentRegion.RemoveDuplicates Array(2, 3), xlYes

Bonjour à tous les deux,

J'ai essayé les deux méthodes. Cela fonctionne.

https://trumpexcel.com/excel-vba/remove-duplicate-values/

C'est le lien URL qui m'a permis de découvrir que l'on pouvait introduire array() dans RemoveDuplicates.

Workbooks(InputFilename).Sheets(OutputSheetName).Range("A1:D" & Rows.count).RemoveDuplicates Columns:=Array(2, 3)

Je continue de regarder tout ça.

Hey,

Je ne connaissais pas du tout cette possibilité avec array !

Je vous remercie pour ce petit tips

@+

bonsoir

une petite contribution pour les privés de VB ou de fonction moderne

cordialement

10aphrodite.xlsx (15.39 Ko)

Tout fonctionne bien. Merci.

La solution qui me convient le moi est array(...,...) à incorporer dans RemoveDuplicates.

Rechercher des sujets similaires à "suppression doublons occurrences"