Contrôler l'existence d'une valeur dans une listbox

Bonjour le forum,

J'ai un nouveau souci que je n'arrive pas à régler, je ne vois pas d'ou viens le problème... même avec des contrôle de cohérence et des msgbox... impossible

Je voudrais, que le code ci-après, ne rajoute une valeur à ma listbox seulement si celle-ci n'existe pas déjà. Pour cela, il convient de vérifier les différentes valeurs présentes dans la listbox. Ainsi, j'ai créer une boucle sur les valeurs à l'aide d'un For/Next mais ce passage du code me renvoie l'erreur d'exécution 381 : impossible de lire la propriété de la list, index de table impossible à définir.

Le code, avec la partie qui m'intéresse surlignée :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim existe As Boolean
Dim typ, aud, prov, occ As String
   typ = Range("C6").Value
    aud = Range("C9").Value
    prov = Range("C12").Value
Dim i, l, n, g As Integer
i = Worksheets("Dossiers").Range("Z1").Value

    ListBox1.Clear

    If TextBox1 <> "" Or typ <> "" Or aud <> "" Or prov <> "" Then
        For Each ce In Worksheets("Dossiers").Range("A2:C" & i)
        existe = False
            If ce Like TextBox1 & "*" Or ce Like LCase(TextBox1) & "*" Or ce Like UCase(TextBox1) & "*" Or ce Like typ Or ce Like aud Or ce Like prov Then
            l = ce.Row

            If (typ = "" Or Worksheets("Dossiers").Range("B" & l).Value = typ) And _
           (aud = "" Or Worksheets("Dossiers").Range("C" & l).Value = aud) And _
           (prov = "" Or Worksheets("Dossiers").Range("O" & l).Value = prov) Then
           occ = Worksheets("Dossiers").Range("A" & l) & " - " & Worksheets("Dossiers").Range("B" & l) & " - " & Worksheets("Dossiers").Range("C" & l)

For n = 0 To ListBox1.ListCount
           MsgBox n & " - " & ListBox1.List(n)
           If ListBox1.List(n) = occ Then
           existe = True
           Exit For
           End If
           Next n

           If existe = False Then
            ListBox1.AddItem Worksheets("Dossiers").Range("A" & l) & " - " & Worksheets("Dossiers").Range("B" & l) & " - " & Worksheets("Dossiers").Range("C" & l)
            End If

            End If
            End If
        Next
    End If
End Sub

Merci d'avance, j'ai estimé que le fichier n'été pas indispensable pour répondre à ma question si je me suis trompé, dit moi .

Cordialement,

bonjour

remplace cette instruction

           
For n = 0 To ListBox1.ListCount

par

           
For n = 0 To ListBox1.ListCount-1

Super ça fonctionne, juste pour ça

Merci à toi, j'aurai cherché des millions d'années.

Cdlt,

bonjour,

listcount te donne le nombre d'éléments dans la listbox1. comme l'index commence à 0 il s'arrête à listcount-1

Rechercher des sujets similaires à "controler existence valeur listbox"