Problème affichage multiple dans champ listbox

Bonjour à tous,

Grâce à l'article "Comment créer un champ de recherche efficace en 3 minutes ?" j'ai pu créer mon champ recherche (textbox) et champ résultat de recherche (Listbox) presque comme souhaité

A la différence avec la solution proposée par l'article où la recherche n'est fait que sur une colonne, je fais ma recherche sur une plage de cellule (A2:L100). De plus je fais apparaître dans le champ résultat "ListBox1" que la valeur de la première cellule de la ligne.

Du coup quand je tape un texte dans le champ de recherche "TextBox1" , si le champ de recherche est à plusieurs endroit dans la même ligne, le champ résultat "listbox1" me sort la première cellule autant de fois que j'ai le mot recherché. Hors comme c'est sur la même ligne je voudrais que ca n'apparaisse qu'une fois.

Ci-dessous mon VBA:

Option Compare Text

Private Sub TextBox1_Change()

Application.ScreenUpdating = False

Range("A2:L100").Interior.ColorIndex = 2

ListBox1.Clear

If TextBox1 <> "" Then

For ligne = 2 To 100

For colonne = 1 To 12

If Cells(ligne, colonne) Like "*" & TextBox1 & "*" Then

Cells(ligne, colonne).Interior.ColorIndex = 6

ListBox1.AddItem Cells(ligne, 1)

End If

Next

Next

End If

End Sub

Je joins mon xls pour une meilleur compréhension.

Merci à tous pour votre aide sur ce sujet

19prob-listbox.xlsm (58.19 Ko)

Bonjour Noir et bienvenu, bonjour le forum,

Un petit Exit For devrait faire l'affaire :

Private Sub TextBox1_Change()
Application.ScreenUpdating = False 'pour fluidiser la macro

Range("A2:L100").Interior.ColorIndex = 2 'met en blanc les cellules quand pas de recherche
ListBox1.Clear 'vide la listbox si pas de recherche

If TextBox1 <> "" Then
    For ligne = 2 To 100 'défini la plage de recherche pour les lignes
        For colonne = 1 To 12 'défini la plage de recherche pour les colonnes
            If Cells(ligne, colonne) Like "*" & TextBox1 & "*" Then 'recherche dans la plage indiqué avec les FOR et les * sont pour permettre une recherche partielle
                Cells(ligne, colonne).Interior.ColorIndex = 6 'met en vert la case avec le mot recherché
                ListBox1.AddItem Cells(ligne, 1) 'indique dans la listbox le numéro de MTS concerné par la recherche
                Exit For '<=== ICI
            End If
        Next
    Next
End If
End Sub

Merci Thauthème pour ta réponse.

Si j'ajoute le Exit For comme indiqué dans ton message la recherche ne fonctionne qu'a moitié. En effet si j'ai 2 fois le même mot dans la ligne je n'aurais qu'une cellule colorisé:

capture

Ce que je souhaite c'est que si j'ai plusieurs fois le même mot dans la même ligne, le texte apparaissant dans la Listbox n'appariasse qu’une seule fois pour éviter de surcharger la listbox.

sans titre

Re,

Alors avec deux boucles, une pour la couleur une autre pour l'ajout dans la ListBox...

Private Sub TextBox1_Change()
Application.ScreenUpdating = False 'pour fluidiser la macro
Range("A2:L100").Interior.ColorIndex = 2 'met en blanc les cellules quand pas de recherche
ListBox1.Clear 'vide la listbox si pas de recherche
If TextBox1 <> "" Then
    For ligne = 2 To 100 'défini la plage de recherche pour les lignes
        For colonne = 1 To 12 'défini la plage de recherche pour les colonnes
            If Cells(ligne, colonne) Like "*" & TextBox1 & "*" Then 'recherche dans la plage indiqué avec les FOR et les * sont pour permettre une recherche partielle
                Cells(ligne, colonne).Interior.ColorIndex = 6 'met en vert la case avec le mot recherché
            End If
        Next
        For colonne = 1 To 12 'défini la plage de recherche pour les colonnes
            If Cells(ligne, colonne) Like "*" & TextBox1 & "*" Then 'recherche dans la plage indiqué avec les FOR et les * sont pour permettre une recherche partielle
                ListBox1.AddItem Cells(ligne, 1) 'indique dans la listbox le numéro de MTS concerné par la recherche
                Exit For
            End If
        Next
    Next
End If
End Sub

Ah oui je suis un peu bête de pas y avoir pensé...

merci bien ThauThème pour ton aide sur ce sujet.

Rechercher des sujets similaires à "probleme affichage multiple champ listbox"