Merci beaucoup je venais justement d'essayer de faire une boucle inverse et ça a marché aussi de mon côté.
Sub suppdouble()
' Trouver la dernière ligne dans la feuille
lastRow = Cells(Rows.Count, "C").End(xlUp).Row
For j = 2 To lastRow ' Commencer à la ligne 2 pour ignorer les en-têtes
' Définir la plage de DT pour l'affaire en cours
Set dtRange = Range(Cells(j, "D"), Cells(j, Cells(j, Columns.Count).End(xlToLeft).Column))
' Parcourir chaque cellule de la plage
For i = dtRange.Cells.Count To 1 Step -1
Set dtCell = dtRange.Cells(i)
If Not IsEmpty(dtCell.Value) Then
' Vérifier si la valeur du DT existe déjà dans la plage de DT (sauf la cellule en cours)
If Application.WorksheetFunction.CountIf(dtRange, dtCell.Value) > 1 Then
dtCell.Delete Shift:=xlShiftToLeft
End If
End If
Next i
Next j
End Sub
Merci encore