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

Macros et VBA Excel Discussion :

chercher dans une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut chercher dans une listbox
    Bonjour tout le monde,

    j'ai une Userform qui contient un textbox et une listbox bien remplit , je voulais savoir est ce qu'il existe une methode pour que je puisse faire une recherche dans la listbox par le textbox, par exemple je saisie le debut du mot rechercher, après la listebox m'affiche les elements qui contient ce debut de mot dans les premiers lignes , ou bien elle efface tt et il m'affiche que les elements correspondant ?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Merry,
    Peut-être pourrais-tu essayer quelque chose comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ListBox.Value Like " Left(TextBox.Value,3)" then '
    ton code
    End If
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    quel code ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pour ce type d'interactions, j'utilise un second listbox qui sert de filtre de "résultat" .... c'est plus simple à gérer au niveau du code, et ça te permet de conserver la vue globale de ta matrice VS ta vue filtrée

    un exemple construit à la main :

    -Listbox1 = la matrice
    -Listbox2 = le filtrage
    -TextBox1 = le champs de recherche

    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
    Option Compare Text ' si tu ne veux pas tenir compte de la casse
    Private Sub TextBox1_Change()
     
    With Me
        ' efface le listbox de filtrage
        .ListBox2.Clear
     
        ' pour chaque élément de la matrice
        For i = 1 To .ListBox1.ListCount
            ' si l'élément commence par ce qui est écrit dans le champs recherche
            ' on l'ajoute au listbox de filtrage
            If .ListBox1.List(i - 1) Like .TextBox1.Text & "*" Then .ListBox2.AddItem .ListBox1.List(i - 1)
        Next i
     
    End With
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    ' quelques éléments crées à la main
    With Me.ListBox1
        .AddItem "toto"
        .AddItem "titi"
        .AddItem "toutou"
        .AddItem "tata"
        .AddItem "tonton"
        .AddItem "clause"
    End With
     
    End Sub
    C'est 100% dynamique, à chaque frappe au clavier ça s'actualise (y compris quand tu supprimes des caractères)

    Nom : FindList.png
Affichages : 1804
Taille : 4,8 Ko

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    Mercioi , c'est ce que je pensais faire aussi , par contre j'ai une liste box qui contient 7 colonnes , donc ça serait pas évident de faire 2 list, ou bien j'ai pensé de faire 2 liste de la meme taille et faire apparaitre qu'une seul , et quand il tape , les résultats s'affichent dans la deuxième.
    est ce que ça serait utile ?

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour,

    dans le même ordre d'idée de joe avec la fonction Filter (sans boucle) …

    Et Merryy, merci de ne pas quoter l'ensemble du message précédent, c'est lourd et inutile !


    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    d’accord c'est noté.

    et du coup l'idée d'apparaitre qu'une seul liste et l'autre invisible , et quand il cherche par textbox , la deuxième est affichés et la première est invisible est faisable ??

    Merci

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour Marc-L

    cette méthode se rattache à quoi ? C'est bien un filtre s'appliquant dans un listbox ?

    par curiosité, je suis en train de chercher, mais je sèche... y compris en parcourant l'explorateur d'objet

    un petit exemple trivial pour que je fasse une proposition modifiée ?

    Merryy, dans l'attente des lumières sur le Filter, je ne me prononce pas sur tes nouvelles interrogations

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Déjà un exemple dans le chapître I-V du tutoriel Manipuler les chaînes de caractères en VB6 et VBA Excel

    Maintenant que Merryy a précisé qu'elle a plusieurs colonnes, ce n'est peut-être pas la solution qui s'impose …

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    ahhhh ok, je cherchais en vain quelquechose lié directement aux contrôles de formulaire (j'aurai pu chercher longtemps)

    c'est clairement pas une solution pour le problème soulevé, certes, mais j'aime pas rester sur un échec avec une méthode que je n'ai jamais utilisé auparavant.


    j'ai naïvement tenté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Me
        .ListBox2.Clear
        .ListBox2.List = Filter(.ListBox1.List, .TextBox1.Text, False)
    End With
    incompatibilité de type sur la ligne où j'ai le filter

    je me suis dis que je prenais un raccourci trop important, et donc j'ai utilisé des tableaux intermédiaires pour stocker :

    - le contenu de ma listbox de départ
    - le résultat du Filter

    mais choux blanc, toujours l'incompatibilité de type sur le filter ... c'est sûrement tout bête mais je passe à côté

    le seul moyen de contournement, c'est en utilisant une boucle, mais tu confirmes qu'on en a pas besoin, donc je contourne mal

  11. #11
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Marc-L Voir le message


    dans le même ordre d'idée de joe avec la fonction Filter (sans boucle) …
    Sans boucle ?
    Ok le remplissage du listbox n'en nécessitera pas, mais en amont c'est pas le cas apparemment.

    C'est tout de suite moins sexy si les données doivent transiter sur une feuille

    je m'attendais à un truc comme j'avais testé dans mon dernier message ... je suis déçu mais pas totalement, toujours un plaisir de regarder tes codes.

  12. #12
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Regarde bien : la feuille ne sert que comme support d'affichage de la démonstration !
    Le traitement est déjà effectué sans la feuille.

    Dans Demo1, mettre un point d'arrêt sur la ligne n°7, lancer puis regarder le contenu
    des variables tableau SP (source) et TF (tableau filtré) dans la fenêtre des Variables locales

  13. #13
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pffff

    tu peux me mettre un -1 sur mon message SVP ?

    ça me fera les pieds

Discussions similaires

  1. [XL-2007] Comment chercher une valeur dans une ListBox ?
    Par Merryy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2015, 12h53
  2. [Excel]Chercher un élement puis retourné dans une listbox
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2006, 17h10
  3. Réponses: 10
    Dernier message: 23/05/2006, 17h42
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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