Re : Supprimer lignes avec les Doublons
Bonjour yagami, Softmama et le forum,
En cas d'une quantité importante de valeurs à traiter, il faut passer en version tableau dynamique. Les explications sont dans le code :
Sub SupprValOppos()
Dim Derlig As Integer, i As Integer, j As Integer, Tablo, Start
Application.ScreenUpdating = False
Start = Timer
' Travail dans la feuille "Feuil1"
With Sheets("Feuil1")
' Dernière cellule de la colonne A avec un objet
Derlig = .Range("A65536").End(xlUp).Row
' Mise en tableau dynamique de la plage à traiter
Tablo = .Range("A1:A" & Derlig)
' Boucle sur toutes les valeurs de la plage
For i = 1 To Derlig - 1
If Tablo(i, 1) <> "" Then ' Saute les valeurs vides
For j = i + 1 To Derlig ' Boucle sur les valeurs après la valeur en traitement
If Tablo(j, 1) = -Tablo(i, 1) Then ' Recherche de la première valeur opposée
Tablo(j, 1) = "" ' Vidage de la première valeur opposée trouvée
Tablo(i, 1) = "" ' Vidage de la valeur de la plage en traitement
Exit For ' Sortie de la boucle
End If
Next j
End If
Next i ' Répétition du traitement sur les autres valeurs existantes
' Affichage des valeurs restantes
.Range("A1").Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
End With
'Message du temps de traitement
MsgBox Application.RoundUp(Timer - Start, 0) & " secondes"
End Sub
Pour changer de nom de feuille, dans la ligne With Sheets("Feuil1"), changer Feuil1 par le nom de la feuille contenant les valeurs.
J'ai ajouté un Timer pour connaître le temps de traitement.