Afficher des doublons dans une zone de liste [Résolu]

Signaler
Messages postés
54
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
28 septembre 2008
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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  
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
54
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
28 septembre 2008

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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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