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 :

recherche restrictive sur listbox


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut recherche restrictive sur listbox
    Bonjour,
    J'ai quelques difficultés à trouver l'algorithme qui me permettrait d'afficher dans une listbox les éléments d'un fichier texte en fonction des caractères entrés dans une zone de texte... Je m'explique...
    Dans mon application, je vais lire dans un fichier texte organisé en structure à deux champs de largeur fixe et j'affiche des données dans une listbox. Mon premier champs correspond à des noms de rue, et mon deuxième aux coordonnées d'un plan.
    L'algorithme que je cherche à développer me permettrait d'afficher uniquement les noms de rue qui ont les mêmes premières lettres que celles qui ont été saisies dans la zone de texte... Ainsi quand je tape "A", la listbox affiche tous les noms de rue commencant par "A" (jusque là pas de pbm, je compare la lettre tapée à la première lettre des noms de rue en extrayant celle ci avec la fonction mi(nom_de_rue, 1, 1)).... Puis si je tape "C" (ma zone de texte contient dès lors "AC") la listbox doit réactualiser son sontenu en n'affichant plus que les noms de rue rue commencant par "AC" (là ca se complique).... et ainsi de suite...
    Merci pour votre aide...
    Je suis dispo pour tout complément d'information... Je peux vous envoyer mon source de projet VB6...
    Roland

  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,

    PMas très clair car :

    tu dis être sous vb6
    tu dis que tu as deux champs par article dans ton fichier texte structuré en base de données
    tu dis enfin en alimenter une listbox.

    Or, sous VB6, la listbox ne peut contenir deux véritables colonnes identifiables (ne pas confondre avec une "présentation", en colonnes)

    Comment, dans de telles conditions, faire une boucle de comparaison ou (si tu préfères l'API, utiliser la fonction SendMessage) ?

    Je te conseille dans un tel cas d'utiliser alors un autre contrôle, telle une listview, par exemple, permettant de boucler sur une colonne définie.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Ok... C'est bon je viens de trouver la solution...
    Voici le code source pour ceux que ca peut intéresser...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Nom_Rue_Change()
    Dim i, nb_car As Integer
    Dim buffer_lettres As String
    rue_saisie = nom_rue.Text
    nb_car = Len(rue_saisie)
    buffer_lettres = Mid(rue_saisie, 1, nb_car)
    List1.Clear
    For i = 0 To taille_liste
     If buffer_lettres = Mid(rues(i), 1, nb_car) Then
      List1.AddItem rues(i)
     End If
    Next
    End Sub
    Comme le nom de l procédure l'indique... tout ce passe dans la zone de texte... en mode change...

    Merci pour les réponses!!
    Cordialement,
    Roland

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    En fait je vais vous donner quelques précisions...
    Je n'affiche qu'un seul champs dans la listbox (ce sont les noms de rue)... Ainsi, lorsque l'utilisateur à trouvé le nom de rue qui l'intéresse, il clique dessus, et récupère les coordonnées du plan (qui correspondent aux deuxième champs) dans une zone de texte ou une msgbox (j'ai pas encore choisi....)
    Voila,
    Encore merci d'avoir pris le temps de me répondre...

  5. #5
    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
    Dans ce cas, regarde ce que fait ceci :
    une listbox nommée List1 et une textbox nommée text1

    tu frappes dans la textbox et vois... puis analyse, comprends et adaptes à ton cas.
    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
    Const LB_FINDSTRING = &H18F
          Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
             (ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
    Private Sub Form_Load()
       List1.Clear
       List1.AddItem "Jean"
       List1.AddItem "Pierre"
       List1.AddItem "Paul"
       List1.AddItem "Jacques"
       Text1.Text = ""
    End Sub
     
    Private Sub Text1_Change()
      List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal Text1.Text)
    End Sub
    Tu aurais sans doute, de surcroît, intérêt à trier ta listbox

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

Discussions similaires

  1. [XL-2010] Rechercher doublon sur listbox
    Par sormick dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/10/2014, 13h47
  2. Recherche plus restrictive sur une adresse
    Par Mides dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 04/04/2013, 17h03
  3. Réponses: 3
    Dernier message: 18/12/2006, 10h14
  4. recherche doc sur les courbe de bézier
    Par amaury pouly dans le forum OpenGL
    Réponses: 4
    Dernier message: 29/04/2003, 23h41

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