XL 2010 VBA créer une liste sans doublon selon conditions

jozerebel

XLDnaute Occasionnel
Bonjour à tous,

Je farfouille sans trouver chaussure à mon pied :-(

J'ai un onglet avec bcp de données et je souhaite dans une autre feuille lister sans doublon et sous conditions les données de la colonne A de la feuille 1.

Si possible en vba car le fichier est déjà très lourd…

Je vous mets un fichier exemple en Pj.

Je précise que je ne peux pas utiliser les fonctions Unique et Filtre.

Je vous remercie pour votre aide !
 

Pièces jointes

  • Xlsdl.xlsx
    411.1 KB · Affichages: 2
Solution
Bonjour Jozerebel,
Un essai en PJ avec :
VB:
Sub Liste()
    Dim T, T_out, DL, i, IndexT_out
    Application.ScreenUpdating = False
    With Sheets("bdd")
        DL = .[A65500].End(xlUp).Row
        T = .Range(.Cells(3, "A"), .Cells(DL, "E")) ' Transfert données dans array
        ReDim T_out(1 To DL)
    End With
    Cond1 = [B1]: Cond2 = [B2]: Cond3 = [B3]: Cond4 = [B4]: IndexT_out = 1
    For i = 1 To UBound(T)
        If T(i, 2) = Cond1 And T(i, 3) = Cond2 And T(i, 4) = Cond3 And T(i, 5) = Cond4 Then
            T_out(IndexT_out) = T(i, 1)
            IndexT_out = IndexT_out + 1
        End If
    Next i
    [F:F].ClearContents
    [F1].Resize(DL, 1).Value = Application.Transpose(T_out)                         ' Restitution résultat...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Jozerebel,
Un essai en PJ avec :
VB:
Sub Liste()
    Dim T, T_out, DL, i, IndexT_out
    Application.ScreenUpdating = False
    With Sheets("bdd")
        DL = .[A65500].End(xlUp).Row
        T = .Range(.Cells(3, "A"), .Cells(DL, "E")) ' Transfert données dans array
        ReDim T_out(1 To DL)
    End With
    Cond1 = [B1]: Cond2 = [B2]: Cond3 = [B3]: Cond4 = [B4]: IndexT_out = 1
    For i = 1 To UBound(T)
        If T(i, 2) = Cond1 And T(i, 3) = Cond2 And T(i, 4) = Cond3 And T(i, 5) = Cond4 Then
            T_out(IndexT_out) = T(i, 1)
            IndexT_out = IndexT_out + 1
        End If
    Next i
    [F:F].ClearContents
    [F1].Resize(DL, 1).Value = Application.Transpose(T_out)                         ' Restitution résultat
    ActiveSheet.Range("$F$1:$F$" & DL).RemoveDuplicates Columns:=1, Header:=xlNo    ' Suppression doublons
End Sub
 

Pièces jointes

  • Xlsdl.xlsm
    377.1 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78