Re : Liste sans doublons
Salut c'est encore moi.
Voilà, j'ai modifié ton code.
En rouge, j'ai du mettre Integer à la place de Byte, sinon, j'avais le message d'erreur "Dépassement de capacité".
Ainsi, ce code fonctionne, mais il est très long (environ 2minutes avec un Pentium IV).
Sub recup()
Dim TabTemp_1 As Variant
Dim TabTemp_2 As Variant
Dim x As Integer, M As Byte
Dim L As Integer, L2 As Byte, Lgn As Byte, Derlgn As Integer
Dim Maplage As Range
Dim Ws_Source As Worksheet
Dim Ws_Cible As Worksheet
Set Ws_Source = Worksheets("PREP")
Set Ws_Cible = Worksheets("DONNEES")
Application.ScreenUpdating = False
With Ws_Source
TabTemp_1 = .Range("BT10:BT" & .Range("BT600").End(xlUp).Row).Value 'on remplit un tableau avec toutes valeurs
End With
With Ws_Cible
Set Maplage = .Range("F3:F" & .Range("F600").End(xlUp).Row) 'on détermine ma plage
.Range("G3").Resize(UBound(TabTemp_1, 1), 1) = TabTemp_1 'on colle les données du tableau
For L = .Range("G600").End(xlUp).Row To 3 Step -1
M = Application.CountIf(Maplage, .Cells(L, 7)) 'on compte si valeur dans la plage
Derlgn = .Range("G600").End(xlUp).Row
If .Cells(L, 7) = "" Or M <> 0 Then
.Cells(L, 7).Delete shift:=xlUp 'on supprime le cellule en decalant vers le haut
End If
Next
Derlgn = .Range("G600").End(xlUp).Row
.Range("G3:G" & Derlgn).Sort key1:=Range("G3"), Order1:=xlAscending 'ici on trie
End With
Application.ScreenUpdating = True
End Sub
Voilà, si quelqu'un pouvait y jeter un oeil pour réduire le temps d'éxécution ce serait sympa.
Pour info, dans la colonne BT, la recherche doit s'effectuer des lignes 10 à 401, dans la colonne F, il n'y aura jamais de nom après la ligne 59.
J'espère avoir été assez clair dans ma requete.
Merci encore...