Recherche dans listview fonctionne mal

osiris150

XLDnaute Occasionnel
Bonjour,

Je viens vers vous car je bloque complètement sur ma recherche dans ma listview.
En fait la recherche fonctionne mais parfois ne prend pas certaines données dans la base de données
Je joins les 2 fichiers concernés.
1 correspond à la base de données et l'autre à celui avec la listview.

Il faut ouvrir le fichier test et cliquer sur le bouton pour faire apparaître la listview.

Je prends un exemple :

Je recherche le mot "Life" dans ma base. En résultat la listview m'affiche 2 lignes où il a bien trouvé le mot recherché mais il en manque une car je devrais avoir 3 résultats.

Je ne comprends pas d'où peut provenir le problème. Si quelqu'un peut m'aider je vous en serais très reconnaissant.
Merci par avance
Cordialement
Nicolas
 
Dernière édition:
G

Guest

Guest
Re : Recherche dans listview fonctionne mal

Bonsoir osiris,

Ta plage de recherche doit être fixe avec Find. Dans l'aide excel il y a un excelent exemple sur Find qui appliqué à ton cas peut donner ceci (qui fonctionne):

Code:
Private Sub CommandButton4_Click()
'RECHERCHE
ListView1.ListItems.Clear
If TextBox15 = "" Then Exit Sub
nom = TextBox15
With Sheets("BaseP").UsedRange.Columns("A:I")
    Dim adr1 As String
    Set c = .Find(TextBox15, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
        If Not c Is Nothing Then
        flag = True
        adr1 = c.Address
          Do
            IniLvw c.Row
            Set c = .FindNext(c)
          Loop While c.Address <> adr1 And Not c Is Nothing
        End If
End With
If Not flag Then MsgBox "Rien trouvé !"
txtTotal = ListView1.ListItems.Count
flag = False
'Stop
End Sub

A+
 

CHALET53

XLDnaute Barbatruc
Re : Recherche dans listview fonctionne mal

Re,

La solution de Hasco est parfaite
La raison de ton problème est la suivante :
Ta boucle s'arrête dès que la ligne traitée avec la colonne 1 est vide : or la ligne 266 (colonne 1) est vide
ton 3ème life est plus loin

Tout ça pour faire avancer le schmili............blick

A+
 

osiris150

XLDnaute Occasionnel
Re : Recherche dans listview fonctionne mal

Bonjour,

Merci Hasco, mais je ne suis pas très doué. Je sais mettre en forme et bidouillé les codes. De là à les fabriquer de A à Z il y a encore du chemin à parcourir...

Je viens de m'apercevoir d'un petit bug sur ton code, que je n'avais pas avant. Si je tape un mot par exemple "catalogue" dans la recherche les résultats affichés sont en double car en effet le mot catalogue se trouvent dans 2 colonnes d'une même ligne.
Est-ce qu'il y a moyen de ne prendre en compte qu'un mot commun par ligne même s'il se trouve dans plusieurs colonnes ?

Merci par avance.
 
Dernière édition:
G

Guest

Guest
Re : Recherche dans listview fonctionne mal

Bonjour,

Voici qui devrait répondre au problème:
Code:
Private Sub CommandButton4_Click()
'RECHERCHE
Dim oDic As Object
Set oDic = CreateObject("Scripting.Dictionary")
ListView1.ListItems.Clear
If TextBox15 = "" Then Exit Sub
nom = TextBox15
With Sheets("BaseP").UsedRange.Columns("A:I")
    Dim adr1 As String
    Set c = .Find(TextBox15, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
        If Not c Is Nothing Then
        flag = True
        adr1 = c.Address
          Do
            If Not oDic.exists(CStr(c.Row)) Then
                IniLvw c.Row
                oDic.Add CStr(c.Row), CStr(c.Row)
            End If
            Set c = .FindNext(c)
          Loop While c.Address <> adr1 And Not c Is Nothing
        End If
End With
If Not flag Then MsgBox "Rien trouvé !"
txtTotal = ListView1.ListItems.Count
flag = False
'Stop
End Sub
A+
 

Discussions similaires

Réponses
19
Affichages
1 K
Réponses
8
Affichages
596

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400