IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

effectuer un filtre sur une listebox


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut effectuer un filtre sur une listebox
    Bonjour

    J’ai commencé un programme par remplier une listebox

    J’ai ensuite ajouté un textbox pour pouvoir effectuer une recherche dans cette liste

    Le problème c'est que je ne sais pas comment je peux faire cette recherche (mais en gros sa consiste à laisser dans la listebox tout les éléments qui contiens le texte de la textbox)


    Exemple :
    Liste de basse :

    A1
    A11
    A12
    A23
    A24
    A24
    B21

    Après avoir mis "A1" dans le textbox le résultat devras être :

    A1
    A11
    A12

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    rien de plus simple, il suffit de mettre tous tes elements dans une autre collection (un system.collections.generic.list of() par exemple)

    ensuite tu fais items.add sur le listbox pour chaque element de la collection

    et sur textchanged du textbox, tu fais items.clear sur le listbox et .add pour chaque element donc le nom like ce qui est dans le textbox
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier Avatar de grrrkewel
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    ou alors tu reparcours ta listbox avec une boucle (listbox.items.count) et tu supprime les éléments différents de ton textbox.text
    Si ma réponse est erronée, ignorez là, mais au moins j'aurais essayé
    Il n'y a pas de mauvaise question, si quelqu'un se la pose, ça ne doit pas être le seul

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    j'ai un bug sur la creation de la liste

    (déclaration dans le module)
    ATTENTION EDIT A LA FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public liste As System.Collections.Generic.List(Of String)

    (dans le même module)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub LectureFichierDansLeRepertoire()
            Form1.ListBoxNumPlan.Items.Clear()
            Dim rep As String
            'obtient le premier fichier ou répertoire qui est dans le repertoire
            rep = Dir(My.Settings.Default.Repertoire & "\*.*", vbDirectory)
            'boucle tant que le répertoire n'a pas été entièrement parcouru
            Do While (rep <> "")
                'teste si c'est un fichier ou un répertoire
                If (GetAttr(My.Settings.Default.Repertoire & "\" & rep) And vbDirectory) = vbDirectory Then
                    'ici si répertoire
                Else
                    'ici si fichier    
                    Form1.ListBoxNumPlan.Items.Add(rep)
                    liste1.Add(rep)
                End If
                'passe à l'élément suivant
                rep = Dir()
            Loop
     
    End Sub
    (ici impossible de faire un ".add pour chaque element donc le nom like ce qui est dans le textbox") ATTENTION EDIT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       Me.ListBoxNumPlan.Items.Clear()
     
            Dim boucle As Integer
     
            For boucle = 0 To ModuleRepertoire.liste1.Count
                If ModuleRepertoire.liste1.Item(boucle).StartsWith(Me.TextBoxRecherchePlan.Text) = True Then
                    Me.ListBoxNumPlan.Items.Add(ModuleRepertoire.liste1.Item(boucle))
                End If
    Next

    EDIT aprés modification
    (déclaration dans le module)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public liste As New System.Collections.Generic.List(Of String)
    j'ai deplacé le code du 'filtre' dans une sub du module utilisé

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pour la création de la liste, si tu ne fais pas un New, ca ne marchera pas ...


    et pourquoi la déclarer public, je suis sur que private suffit
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    EDIT

    sa marche !!!

    donc j'ai fait un module avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Module ModuleRepertoire
        Private liste1 As New System.Collections.Generic.List(Of String)
     
     
        Sub LectureFichierDansLeRepertoire()
            Form1.ListBoxNumPlan.Items.Clear()
            Dim rep As String
            'obtient le premier fichier ou répertoire qui est dans le repertoire
            rep = Dir(My.Settings.Default.Repertoire & "\*.txt", vbDirectory) 'attention ici j'ai filter les fichier texte 
            'boucle tant que le répertoire n'a pas été entièrement parcouru
            Do While (rep <> "")
                'teste si c'est un fichier ou un répertoire
                If (GetAttr(My.Settings.Default.Repertoire & "\" & rep) And vbDirectory) = vbDirectory Then
                    'ici si répertoire
                Else
                    'ici si fichier    
     
                    If rep.EndsWith(".txt") Then 'controle si c'est un fichier texte
     
                        rep = rep.Remove(rep.Length - 4, 4) ' ici sa coupe l'extention du nom du fichier 
                        Form1.ListBoxNumPlan.Items.Add(rep)
                        liste1.Add(rep)
                    End If
                End If
                'passe à l'élément suivant
                rep = Dir()
            Loop
     
        End Sub
     
    'ici je fait le filtre pour la listbox
        Sub Filtre()
            Form1.ListBoxNumPlan.Items.Clear()
     
            Dim boucle As Integer
     
            For boucle = 0 To ModuleRepertoire.liste1.Count - 1
                If ModuleRepertoire.liste1.Item(boucle).Contains(Form1.TextBoxRecherchePlan.Text) = True Then
                    Form1.ListBoxNumPlan.Items.Add(ModuleRepertoire.liste1.Item(boucle))
                End If
            Next
        End Sub
     
    End Module

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mettre un filtre sur une colonne + listebox
    Par nabelou1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/03/2009, 12h57
  2. Associer un clique et un double clique sur une listebox
    Par mcdonald dans le forum Tkinter
    Réponses: 3
    Dernier message: 10/06/2006, 16h57
  3. Filtre sur une liste de valeurs
    Par Death83 dans le forum Débuter
    Réponses: 3
    Dernier message: 07/05/2006, 00h39
  4. filtre sur une partie d'encodage
    Par cuci dans le forum Access
    Réponses: 2
    Dernier message: 03/11/2005, 18h29
  5. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo