Sub Macro1()
'**************************
'déclarations des variables
'**************************
Dim dl As Long 'déclare la varaible dl (Dernière Ligne)
Dim pl As Range 'd;eclare la varaible pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim r As Range 'déclare la variable r (Recherche)
Dim tbl() As Long 'déclare le tableau de variables tbl (TaBleau de Lignes)
Dim x As Long 'déclare la variable x (incrément de variable)
Dim le As Range 'déclare la variable le (Lignes à Effacer)
'********************************
'Définition dynamique de la plage
'********************************
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1" (à adapter à ton cas)
dl = .Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la ligne de la dernière cellule éditée de la colonne C (3)
Set pl = .Range("C1:C" & dl) 'définit la plage pl
End With 'fin de la prise en compote de l'onglet Feuil1
'*********************
'repérage des doublons
'*********************
Application.ScreenUpdating = False 'masque les changement à l'écran
For Each cel In pl 'boucle sur toutes cellules de la plage pl
If cel.Interior.ColorIndex <> 3 Then 'condition 1 : si la couleur de fond de la cellule n'est pas rouge
If Application.WorksheetFunction.CountA(pl, cel.Value) > 1 Then 'condition 2 : si il y a doublon de la cellule dans la plage pl
pa = cel.Address 'définit la première adresse
Set r = pl.Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur de la cellule dans la plage pa)
'********************************************************************************
'récupérarion du numéro des lignes contenant un doublon dans un tableau dynamique
'********************************************************************************
Do 'exécute
If r.Address <> pa Then 'condition 3 : si l'adresse de r est diférente de pa
r.Interior.ColorIndex = 3 'colore la cellule de rouge
ReDim Preserve tbl(x) 'redimensionne le tableau tbl
tbl(x) = r.Row 'attribue une variable indéxee au tableau tbl (le numéro de ligne)
x = x + 1 'incrémente x
End If 'fin de la condition 3
Set r = pl.FindNext(r) 'redéfinit la recherhce r (recherche suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe des occurrence trouvées ailleurs qu'en pa
End If 'fin de la condition 2
End If 'fin de la condition 1
Next cel 'prochaine cellule de la boucle
'*******************************************
'définition de la plage des lignes à effacer
'*******************************************
On Error GoTo fin 'gestion des erreurs, si une erreur est générée, va à l'étiquette "fin"
Set le = Rows(tbl(0)) 'définit la plage le (génère une erreur si il n'y a aucun doublon dans la colonne C
For x = 1 To UBound(tbl) 'boucle sur toutes les variables du tableau de variables tbl (en partant de la seconde)
Set le = Application.Union(le, Rows(tbl(x))) 'redéfinit la plage le
Next x 'prochaine variable de la boucle
le.Delete 'supprime la plage le
Application.ScreenUpdating = True 'affiche les changement à l'écran
fin: 'étiquette
End Sub