Afficher des doublons dans une zone de liste

Résolu
lisco Messages postés 54 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 28 septembre 2008 - 7 août 2008 à 12:38
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 16 août 2008 à 13:01
Bonjour,je voudrais afficher des doublons dans une zone de liste ,c'est a dire j'ai des doulons comme:
AAAAA
AAAAA
AAAAA
BBBBB
BBBBB
CCCCC
CCCCC
DDDDD
DDDDD
et je voudrais afficher uniquement les doublons par simple clique sur un bouton de comande c'est a dire si je clique une fois j'affiche:
AAAAA
AAAAA
AAAAA
et une deuxieme clique m'affiche:
BBBBBB
BBBBBB
et un troisieme clique m'affiche :
CCCCC
CCCCC
help please
merci d'avance

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 août 2008 à 16:22
salut,

allez du tout cuit pour voir la suite, j'suis curieux... ^^

Option Explicit
'
Private Type tItem
    Item As String
    Count As Integer
End Type
'
Dim asHistory() As tItem
'
'
Private Sub Form_Load()
    List1(0).AddItem "AAAAA"
    List1(0).AddItem "AAAAA"
    List1(0).AddItem "AAAAA"
    List1(0).AddItem "BBBBB"
    List1(0).AddItem "BBBBB"
    List1(0).AddItem "CCCCC"
    List1(0).AddItem "CCCCC"
    List1(0).AddItem "DDDDD"
    List1(0).AddItem "DDDDD"
    ReDim asHistory(0)
End Sub
'
'
Private Sub Command1_Click()
    Dim i As Integer, iRet As Integer
    For i = 0 To List1(0).ListCount - 1
        iRet = GetIndex(List1(0).List(i))
        If iRet Then
            If asHistory(iRet).Count = 2 Then
                Load List1(iRet)
                List1(iRet).Left = List1(0).Left + (List1(0).Width + 50) * iRet
                List1(iRet).Visible = True
                List1(iRet).AddItem asHistory(iRet).Item
                List1(iRet).AddItem asHistory(iRet).Item
            ElseIf asHistory(iRet).Count >
2 Then
                List1(iRet).AddItem asHistory(iRet).Item
            End If
        End If
    Next i
    ReDim asHistory(0)
End Sub
'
'
Private Function GetIndex(ByVal sStr As String) As Integer
    Dim i As Integer, Index As Integer
    For i = 0 To UBound(asHistory)
        If asHistory(i).Item = sStr Then
            asHistory(i).Count = asHistory(i).Count + 1
            GetIndex = i
            Exit Function
        End If
    Next i
    Index = UBound(asHistory) + 1
    ReDim Preserve asHistory(Index)
    With asHistory(Index)
        .Item = sStr
        .Count = 1
    End With
End Function

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2008 à 12:44
Salut,

il te suffit de lire le premier item, puis l'item suivant. S'ils correspondent => ajout dans seconde liste, jusqu'à ce que l'item suivant (par boucle) soit différent.
Avec une variable static, tu peux mémoriser l'index du dernier item chargé, pour reprendre là où tu en étais.

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
lisco Messages postés 54 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 28 septembre 2008
16 août 2008 à 10:50
Merci , finalement j'ai changé d'orientation pour mon projet mais la finalité était de faire un logiciel qui affiche des doublons et qui nous permettra de supprimer les fichiers que nous voulons. Mais ton code marche bien car je l'ai bien testé , et encore merci
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 août 2008 à 13:01
alors pense à valider ma réponse, çà peut servir à d'autres
++

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
Rejoignez-nous