Suppression de doublons selon 2 conditions (sur 2 plages)

Bonjour la team,

J'ai besoin de supprimer des doublons selon 2 conditions :

Si dans colonne A j'ai un doublon et que dans la colonne 0 j'ai un doublon alors supprimer la ligne

Exemple :

Si

Colonne A à la ligne 2 = Toto et Colonne O à la ligne 2 = Tata

Colonne A à la ligne 10 = Toto et Colonne O à la ligne 10 = Tata

Colonne A à la ligne 25 = Toto et Colonne O à la ligne 25 = Tata

Alors supprimer les lignes en doublons et me faire un message (MsgBox) pour dire combien de doublons il a supprimé

***J'ai un code qui fonctionne mais aléatoirement lors des tests sur différents cas

14inv.xlsm (16.33 Ko)

dès lors que je retire une lettre par ci par là il supprime des lignes qui ne devrait pas.

Sub SupprimerDoublons()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim rng As Range
Dim doublonsSupprimes As Long

' Spécifiez le nom de la feuille de travail
Set ws = ThisWorkbook.Sheets("INV EXT")

' Trouver la dernière ligne avec des données dans la colonne C
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

' Parcours des lignes de bas en haut pour éviter les problèmes lors de la suppression
For i = lastRow To 2 Step -1
' Vérifiez si la valeur dans la colonne C est un doublon
If Application.WorksheetFunction.CountIf(ws.Range("C:C"), ws.Cells(i, 3).Value) > 1 Then
' Vérifiez si la valeur dans la colonne O est également un doublon
If Application.WorksheetFunction.CountIf(ws.Range("O:O"), ws.Cells(i, 15).Value) > 1 Then
' Si les deux conditions sont remplies, supprimez la ligne
ws.Rows(i).Delete
doublonsSupprimes = doublonsSupprimes + 1
End If
End If
Next i

' Affichez le nombre de doublons supprimés
MsgBox doublonsSupprimes & " doublons supprimés.", vbInformation
End Sub

Edit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois

Merci d'avance pour votre aide.

Bonjour,

Vous nous parlez de la colonne "A" et dans votre code vous mettez la colonne "C"

Laquelle faut-il tester du coup

A+

Bonjour Bruno45,

oupss oui pardon c'est bien la colonne C et O

Re,

Alor vous y étiez presque je pense

Sub SupprimerDoublons()
  Dim ws As Worksheet
  Dim lastRow As Long
  Dim i As Long
  Dim doublonsSupprimes As Long

  ' Spécifiez le nom de la feuille de travail
  Set ws = ThisWorkbook.Sheets("INV EXT")

  ' Trouver la dernière ligne avec des données dans la colonne C
  lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

  ' Parcours des lignes de bas en haut pour éviter les problèmes lors de la suppression
  For i = lastRow To 2 Step -1
    ' Vérifiez si la valeur dans la colonne C est un doublon
    If Application.WorksheetFunction.CountIfs(ws.Range("C:C"), ws.Range("C" & i), _
       ws.Range("O:O"), ws.Range("O" & i)) > 1 Then
      ' Si les deux conditions sont remplies, supprimez la ligne
      ws.Rows(i).Delete
      doublonsSupprimes = doublonsSupprimes + 1
    End If
  Next i

  ' Affichez le nombre de doublons supprimés
  MsgBox doublonsSupprimes & " doublons supprimés.", vbInformation
End Sub

A vous de vérifier et nous dire

A+

merciiii beaucoup ça marche à merveille

Pour mieux comprendre et apprendre peux-tu stp m'expliqué ce que tu as fais quel est le rôle du & i et le s (de CountIfs) ...?

image

Merci encore :)

Re,

CountIf = Nb.SI() = 1 seule condition

CountIfs = Nb.Si.Ens() = plusieurs conditions

MERCI BEAUCOUP!!!!!!!!!!!!!

Petite question stp, je viens d'intégrer le code dans un fichier plus complet il marche bien nikel sauf qu'au niveau compteur j'ai 22 doublons supprimés réellement mais lui me dit qu'il en a supprimé 23

Y-a t-il un +1 dans le code ? je ne vois pas du tout l'erreur (j'ai bien checker les doublons manuellement il y en a bien 22)

image

Re,

Je ne sais pas

Sur votre fichier test il y a 17 lignes, reste 5 donc 12 doublons supprimés ce que le message me dit bien

A+

Rechercher des sujets similaires à "suppression doublons conditions plages"