Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Ou peut être plus simple avec une macro événementielle, et des listes déroulantes pour les conditions.
Il suffit de modifier une condition pour qu'automatiquement la liste soit mise à jour.
 

Pièces jointes

Salut Sylvanu !

Ta première solution me convient tout à fait !

Je vais maintenant étudier ton code pour apprendre.

Pour l'évènementiel, je vais enregistrer ton fichier pour plus tard !

Je te remercie bcp !

Bonne journée à toi !
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…