Option Explicit
Sub testsurColonneD()
' macro qui va permettre de faire une double recherche pour supprimer les lignes inutiles
' Pour expliquer en détail pour un montant dans les colonnes intitulées D (Colonne C2 non prise en compte) il y a environ 50%
' de la TVA qui vient s'ajouter sauf que je n'en ai pas besoin
' Je parlais de double critère car en effet il faut un double doublon pour effectuer cette tâche de
' suppression : sur la colonne N et P de ce fait s'il y a un doublon sur la colonne N et P alors il
' faut supprimer la ligne la plus petite (qui équivaut à 50% de la TVA environ)
' Soit :
' A ) Identification de la ligne avec couleur jaune
' B ) Puis suppression de cette ligne
'
Application.ScreenUpdating = False
Dim t(0 To 1) As Variant
Dim a() As Variant
Dim i, j As Long
t(0) = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, Cells(1, Cells.Columns.Count).End(xlToLeft).Column))
Set t(1) = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, Cells(1, Cells.Columns.Count).End(xlToLeft).Column))
'ReDim preservet(LBound(t(0), 1) To UBound(t(0), 1), LBound(t(0), 2) To UBound(t(0), 2) + 1)
' A) Identification de la ligne avec couleur jaune
For i = LBound(t(0), 1) + 1 To UBound(t(0), 1)
For j = i + 1 To UBound(t(0), 1)
If t(0)(i, 7) & t(0)(i, 10) = t(0)(j, 7) & t(0)(j, 10) Then
a = Array(t(0)(i, 8), t(0)(j, 8))
If Application.Min(a) = t(0)(i, 8) Then
'MsgBox t(0)(i, 8)
't(0)(i, UBound(t(0), 2)) = "x"
Range(t(1).Cells(i, 1), t(1).Cells(i, UBound(t(0), 2))).Interior.Color = 65535
ElseIf Application.Min(a) = t(0)(j, 8) Then
'MsgBox t(0)(j, 8)
't(0)(j, UBound(t(0), 2)) = "x"
Range(t(1).Cells(j, 1), t(1).Cells(j, UBound(t(0), 2))).Interior.Color = 65535
End If
Erase a
End If
Next j
Next i
i = Empty: j = Empty
' B ) Puis suppression de cette ligne
For i = t(1).Rows.Count To 1 Step -1
If Range(t(1).Cells(i, 1), t(1).Cells(i, UBound(t(0), 2))).Interior.Color = 65535 Then
Range(t(1).Cells(i, 1), t(1).Cells(i, UBound(t(0), 2))).Delete
End If
Next i
Erase t
i = Empty: j = Empty
Application.ScreenUpdating = True
End Sub