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 :

Filtrer le rowsource une list box


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut Filtrer le rowsource une list box
    Bonjour,


    J'ai une listbox dans le form (Boutton 1) alimentée par des données (rowsource "cheville"). Cette liste est trop longue.
    je souhaite que si l'utilistateur tape quelques lettres, la liste des items de la rowsource soit filtré du contenu.

    Sachant que j'aurais plein de listbox, il faudrait pouvoir toujours utiliser une rowsource lie a une liste fixe

    Par exemple si je tape 60 dans la liste box, n'apparaisse plus que les éléments contenant 60 afin de limiter la selection.



    Any idea?

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    find avec findnext
    ou for avec instr

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    je suis beaucoup trop novice pour comprendre la reponse

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Tu fais une textbox, sur l'évènement change de cette textbox tu vas boucler sur la colonne qui vient remplir la listbox et vérifier si il contient bien ce que tu as tappé; deux façons de faire avec une boucle ou avec un find

    Methode barbare:
    Supposons que ta liste s'appelle liste et que ton textbox1 s'appelle texte que ta liste soit alimentée par la colonne 1 de la feuil1



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_Change()
    liste.clear
    For i = 1 to Feuil1.range("A" & Feuil1.rows.count).end(xlup).row
    If instr(ucase(cstr(Feuil1.range("A" & i))),ucase(textbox1.value))>0 then
    liste.add Feuil1.range("A" & i)
    end if
    next i
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Par défaut
    merci beaucoup


    mais est il possible de tout faire dans la liste box au lieu de sisir dans la texte et de filter ans la liste?
    Fichiers attachés Fichiers attachés

  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.
    Citation Envoyé par nikomotte Voir le message
    […] je souhaite que si l'utilistateur tape quelques lettres, la liste des items de la rowsource soit filtré du contenu
    L'idéal serait la fonction Filter, consulter l'aide intégrée VBA et les tutoriels et autres FAQ de ce site
    comme par exemple dans le document Manipuler les chaînes de caractères

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    J'ai utilisé une ComboBox plutôt qu'une ListBox.
    Une piste avec la démarche ci-dessous

    1) Créez un UserForm1 avec une ComboBox1
    2) Dans la fenêtre de code du UserForm, copiez le code suivant
    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
    Dim var
     
    Private Sub ComboBox1_Change()
    Dim A$
    Dim i&
    '--- On sort si la sélection a une correspondance exacte ---
    For i& = 1 To UBound(var, 1)
      If ComboBox1 = var(i&, 1) Then
     
        '### exemple d'utilisation : la sélection s'affiche dans E10 ###
        [e10] = ComboBox1
        '###############################################################
     
        Exit Sub
      End If
    Next i&
    '--- On filtre la liste avec les caractères tapés ---
    A$ = ComboBox1
    ComboBox1.Clear
    For i& = 1 To UBound(var, 1)
      If InStr(1, UCase(var(i&, 1)), UCase(A$)) > 0 Then
        ComboBox1.AddItem var(i&, 1)
      End If
    Next i&
    End Sub
     
    Private Sub UserForm_Initialize()
    ComboBox1.ListRows = 10
    '--- On met tout le contenu de la plage nommée "cheville" dans ComboBox1.List ---
    var = ActiveSheet.Range("cheville")
    ComboBox1.List = var
    End Sub
    Il est indispensable d'avoir une plage nommée "cheville" sur la feuille active comportant les différents items de chevilles.

    La liste de la ComboBox se filtre au fur et à mesure des caractères tapés.
    Le choix s'effectue en cliquant dans la zone déroulante.

    Je mets un exemple en pièce jointe pour faciliter.

Discussions similaires

  1. Gestion d'une liste box
    Par norwy dans le forum Windows
    Réponses: 6
    Dernier message: 01/11/2005, 12h51
  2. selectionner le dernier element d'une liste box
    Par adilou1981 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/03/2005, 10h19
  3. Largeur d'une liste box
    Par poiiop dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/09/2004, 23h47
  4. Passer a la ligne ds une list box
    Par schnito dans le forum MFC
    Réponses: 11
    Dernier message: 19/02/2004, 13h11
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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