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

  • Initiateur de la discussion Initiateur de la discussion jozerebel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
276
Retour