Non ne travaille pas, je pense que la différence vient des doublons existant dans chaque tableau.Tu as décidé de me faire travailler un dimanche !
Re...Bonjour le fil, le forum,
Dans le fichier joint je compare les 3 solutions sur 19 000 lignes (données aléatoires entre 1 et 100).
Notez que les résultats en nombre de lignes des 3 tests ne sont pas les mêmes.
J'ai bien vérifié les miens, ils sont justes.
A+
Re..pierrejean récupère 2 lignes de plus.
La macro de pierrejean ne va pas parce qu'elle mélange tableaux VBA (invariables) et suppressions de lignes.J'ai beau chercher, en long et en large( même en prenant Max(colonne(A), colonne(G)), je ne trouve pas d'où viennent ces deux lignes.
Une idée ??
Sub test_pierrejean()
Feuil2.[A:K].Copy [A1] 'initialisation
t = Timer
Set tablo = Range("A2:E" & Range("A" & Rows.Count).End(xlUp).Row)
Set tablo1 = Range("G2:K" & Range("G" & Rows.Count).End(xlUp).Row)
For n = tablo.Rows.Count To 1 Step -1
For m = tablo1.Rows.Count To 1 Step -1
If tablo(n, 1) = tablo1(m, 1) And tablo(n, 3) = tablo1(m, 3) And tablo(n, 4) = tablo1(m, 4) Then
Range("A" & n + 1 & ":E" & n + 1).Delete Shift:=xlUp
Range("G" & m + 1 & ":K" & m + 1).Delete Shift:=xlUp
End If
Next
Next
MsgBox "Durée " & Format(Timer - t, "0.00 \s")
End Sub
Re..La macro de pierrejean ne va pas parce qu'elle mélange tableaux VBA (invariables) et suppressions de lignes.
En remplaçant les tableaux VBA par des plages ça doit aller :
Mais c'est terriblement long, essayez de tester ce fichier (3), moi j'ai abandonné.
Oui je confirme, 1h28mn pour des lignes identiques aux versions job et mapommeC'est beaucoup plus que 137s, testez la macro de pierrejean sur mon fichier (3).
Sub test_pj3()
Feuil2.[A:K].Copy [A1] 'initialisation
t = Timer
derlin1 = Range("A" & Rows.Count).End(xlUp).Row
derlin2 = Range("G" & Rows.Count).End(xlUp).Row
Range("F2:F" & derlin1) = 1
Range("L2:L" & derlin2) = 2
Range("$A$2:$F$" & derlin1).RemoveDuplicates Columns:=Array(1, 3, 4)
Range("$G$2:$L$" & derlin2).RemoveDuplicates Columns:=Array(1, 3, 4)
Range("$G$2:$L$" & derlin2).Copy Destination:=Range("A" & Rows.Count).End(xlUp).Offset(1)
derlin3 = Range("A" & Rows.Count).End(xlUp).Row
Range("$A$2:$F$" & derlin3).RemoveDuplicates Columns:=Array(1, 3, 4)
Set c = Columns("F").Find(2)
Range("A" & c.Row & ":F" & derlin3).Copy Destination:=Range("G2")
Range("A" & c.Row & ":F" & derlin3).Delete shift:=xlUp
Columns("F").ClearContents
Columns("L").ClearContents
MsgBox "Durée " & Format(Timer - t, "0.00 \s")
End Sub