Supprimer doublon controle listbox [Résolu]

steve077 6 Messages postés vendredi 29 décembre 2006Date d'inscription 29 juin 2008 Dernière intervention - 23 juin 2008 à 17:40 - Dernière réponse : steve077 6 Messages postés vendredi 29 décembre 2006Date d'inscription 29 juin 2008 Dernière intervention
- 23 juin 2008 à 18:44
Bonjour

Je voudrais supprimer les doublons dans un contrôle de 6 listbox nommées List1(0) ,List1(1) ... ,List1(5)
Le problème c'est que ma fonction tourne en boucle.
Je me suis inspiré de ce code : http://www.vbfrance.com/code.aspx?ID=7647

Je vous laisse mon code ci-dessous :

Function VerifDoublon()

Dim iPos As Integer
iPos = 0

 If Form2.List1(5).ListCount < 1 Then Exit Function    'Si la listbox est vide il quitte la fonction

    Do While iPos < Form2.List1(5).ListCount
        Form2.List1(5).Text = Form2.List1(5).List(iPos)

    'Verifie si le text existe deja
    If Form2.List1(5).ListIndex <> iPos Then
       If Form2.List1(4).ListIndex <> iPos Then
          If Form2.List1(3).ListIndex <> iPos Then
            If Form2.List1(2).ListIndex <> iPos Then
                If Form2.List1(1).ListIndex <> iPos Then
                   If Form2.List1(0).ListIndex <> iPos Then
                         'Si c 'est le cas il supprime et garde la position iPos...
                         Form2.List1(5).RemoveItem iPos
                         Form2.List1(4).RemoveItem iPos
                         Form2.List1(3).RemoveItem iPos
                         Form2.List1(2).RemoveItem iPos
                         Form2.List1(1).RemoveItem iPos
                         Form2.List1(0).RemoveItem iPos
                        Else
                         'Si ce n'est pas le cas il change la position iPos...
                         iPos = iPos + 1

              End If
          End If
       End If
    End If
  End If
End If
 Loop
 
 Form2.List1(5).Text = "-"   'Utilisé pour désélectionner la dernière ligne

End Function

Merci d'avance a ceux qui pourront m'aider
Afficher la suite 

6 réponses

Répondre au sujet
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juin 2008 à 17:46
+3
Utile
salut,

utilise mon snippet :
Private Sub 
NoDupesInCombo(ByRef txt As ListBox)
    Dim i As Long, j As Long
   
    For i = 0 To txt.ListCount - 1
        For j = txt.ListCount - 1 To i + 1 Step -1
            If txt.List(i) = txt.List(j) Then txt.RemoveItem (j)
        Next j
    Next i
End Sub

t'as plus qu'à faire un
NoDupesInCombo Text1

@++

le mystérieux chevalier,"Provençal, le gaulois"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juin 2008 à 17:47
0
Utile
ouias enfin

NoDupesInCombo LIST1

(à l'origine, c'était pour un Combo, mais bon, j'ai mal corrigé)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Commenter la réponse de mortalino
steve077 6 Messages postés vendredi 29 décembre 2006Date d'inscription 29 juin 2008 Dernière intervention - 23 juin 2008 à 18:00
0
Utile
Salut

J'ai réussi en modifiant ton code , merci Mortalino :)

Je met le code modifié si jamais quelqu'un à le même problème un jour :

 Sub VerifDoublon()
    Dim i As Long, j As Long
   
    For i = 0 To Form2.List1(5).ListCount - 1
        For j = Form2.List1(5).ListCount - 1 To i + 1 Step -1
            If Form2.List1(5).List(i) = Form2.List1(5).List(j) Then
                If Form2.List1(4).List(i) = Form2.List1(4).List(j) Then
                    If Form2.List1(3).List(i) = Form2.List1(3).List(j) Then
                        If Form2.List1(2).List(i) = Form2.List1(2).List(j) Then
                            If Form2.List1(1).List(i) = Form2.List1(1).List(j) Then
                                If Form2.List1(0).List(i) = Form2.List1(0).List(j) Then
                               
                                    Form2.List1(5).RemoveItem (j)
                                    Form2.List1(4).RemoveItem (j)
                                    Form2.List1(3).RemoveItem (j)
                                    Form2.List1(2).RemoveItem (j)
                                    Form2.List1(1).RemoveItem (j)
                                    Form2.List1(0).RemoveItem (j)
       
       
                                End If
                            End If
                        End If
                    End If
                End If
            End If
       
       
        Next j
    Next i
End Sub
Commenter la réponse de steve077
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juin 2008 à 18:03
0
Utile
Humm jute ça, ça devrait suffir :

Private Sub 
NoDupesInCombo(ByRef txt As ListBox)
    Dim i As Long, j As Long
   
    For i = 0 To txt.ListCount - 1
        For j = txt.ListCount - 1 To i + 1 Step -1
            If txt.List(i) = txt.List(j) Then txt.RemoveItem (j)
        Next j
    Next i
End Sub



 Sub VerifDoublon()








NoDupesInCombo






Form2.List1




End Sub


@++

le mystérieux chevalier,"Provençal, le gaulois"
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juin 2008 à 18:04
0
Utile
put*** de mise en page

Private Sub NoDupesInCombo(ByRef txt As ListBox)
    Dim i As Long, j As Long
    
    For i = 0 To txt.ListCount - 1
        For j = txt.ListCount - 1 To i + 1
Step -1
            If txt.List(i) = txt.List(j) Then
txt.RemoveItem (j)
        Next j
    Next i
End Sub

Sub VerifDoublon()
        NoDupesInCombo Form2.List1
End Sub
~
<small>Mortalino ~ [code.aspx?ID=39466 Colorisation
automatique]</small>

là c'est mieux

@++

le mystérieux chevalier,"Provençal, le gaulois"
Commenter la réponse de mortalino
steve077 6 Messages postés vendredi 29 décembre 2006Date d'inscription 29 juin 2008 Dernière intervention - 23 juin 2008 à 18:44
0
Utile
Oui sa marche aussi merci a toi :)
Commenter la réponse de steve077

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.