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 6 et antérieur Discussion :

Filtrer la source d'un combo au fur et à mesure de la saisie


Sujet :

VB 6 et antérieur

  1. #1
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut Filtrer la source d'un combo au fur et à mesure de la saisie
    Bonjour.

    J'ai une question relative aux combobox.

    Je souhaite ajouter la fonctionnalité suivante:
    Dès qu’on tape des caractères dans le champ éditable du combobox , la liste est filtrée et ne laisse apparaître que les libellés commençant par ces lettres.

    Merci pour votre aide.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Bon ...

    Un exemlple avec utilisation de la fonction SendMessage de l'Api de Windows (c'est le plus rapide à l'exécution) :

    Sur ta Form : une Combobox nommée Combo1 et une Textbox nommée Text1

    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
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
     
      Private Sub Form_Load()
       Combo1.Clear
       Combo1.AddItem "Tomates"
       Combo1.AddItem "bananes"
       Combo1.AddItem "tubercules"
       Combo1.AddItem "biscuits"
       Text1.Text = ""
    End Sub
     
    Private Sub Text1_Change()
      Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal Text1.Text)
    End Sub
     
    Private Sub Combo1_Change()
      Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal Combo1.Text)
    End Sub
    Tu t'apercevras vite de l'intérêt qu'il y a à utiliser la textbox plutôt que la zone éditable de la Combo.
    Avec la textbox : frappe de b ===>> bananes ... bi ===>> biscuits (ce qui est mille fois plus pratique)

    Sers-t-en bien

    Edit : Il est maintenant clair que si tu veux que n'apparaissent que certains libellés, on saura faire également, mais là encore :

    - ou ta combobox n'est liée à aucune source de données (et on ne le sait toujours pas ...) et on saura utiliser la récursivité et un tremplin (juste un peu d'acrobatie)
    - ou ta combobox est liée à une base de données et tu n'auras alors d'autres choix que l'un des deux suivants :
    --- reconstituer ton recordset avec utilisation de l'opérateur Like et rafraichir ta combobox
    ou
    ---- utiliser la récursivité, faire apparaître une seconde combobox et rendre invisible la première.

  3. #3
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse,
    En fait ma combobox est liée a une base de données.
    Pour le choix suivant:
    --- reconstituer ton recordset avec utilisation de l'opérateur Like et rafraichir ta combobox
    Comment je dois modifier ma recordset en fonction des lettres saisies par l'utilisateur.

    Merci.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bon...
    Il te faut, pour y parvenir, passer par un controle Data et faire une ou 2 acrobaties. (tout cela est expliqué dans ton aide en ligne à la rubrique DATA (contrôle DATA)

    Mais je me demande si tu ne trouveras pas beaucoup plus à ta portée d'utiliser tout simplement un contrôle DataCombo ...(c'est bien plus facile à gérer)

Discussions similaires

  1. Tri automatique au-fur et à mesure de la saisie
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/10/2013, 11h31
  2. Réponses: 2
    Dernier message: 28/07/2013, 22h58
  3. [XL-2003] Recherche au fur et à mesure de la saisie
    Par stefan69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/01/2010, 16h50
  4. calcul au fur et à mesure de la saisie
    Par papimcha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/04/2008, 14h27
  5. Réponses: 6
    Dernier message: 12/01/2008, 22h53

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