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 :

[VB6] COMBO: se positionner sur un élément


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut [VB6] COMBO: se positionner sur un élément
    Bonjour, j'ia dans mon projet un combo box en propriete style =0 et je charge ce combo avec une base de donnée et je vx que ce soit modifiable pour la modification d'un rajout dans la table pas de probleme.
    Mais par exemple je rentre une valeur qui est deja existante je voudrait que lorsque je tape le texte que si ca commence comme un deja present dans le combo box qu'il me l'affiche exemple:
    RENNES : est dans ma liste combo
    et si je tape RE je voudrais que rennes s'affiche mais si par exemple je tape apres le "e" une autre lettre que "n" ca n'affiche plus rennes mais ren si aucun texte dans mon combo ne correspond
    merci

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Il faut pour cela utiliser l'événement Change, déclenché par la saisie au clavier.
    Tu récupères la chaîne saisie, et tu parcours les éléments de ton combobox pour positionner le ListIndex sur le premier qui correspond, et le laisser à -1 si aucun de correspond.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    tu pourrais me donner un exemple de code stp
    merci

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    salut
    voila ce que j'ai fait pour mon prog:
    j'ai une textbox ou je saisis les premières lettres d'un club et une listbox ou les noms de clubs "montent" en fonction de la saisie


    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
    Private Sub text_recherche_Change()
    Dim i As Integer
    Dim trouve As Boolean
    i = 0
    trouve = False
    Do
    If Left(list_nageurs.List(i), Len(text_recherche.Text)) = text_recherche.Text Then trouve = True
    i = i + 1
    Loop Until trouve = True Or i = list_nageurs.ListCount
    If trouve Then
    list_nageurs.ListIndex = i - 1
    Else
    list_nageurs.ListIndex = -1
    End If
     
    Dim a As Integer
    a = list_nageurs.ListIndex
    If list_nageurs.ListCount < a + 9 Then
    list_nageurs.ListIndex = list_nageurs.ListCount
    list_nageurs.ListIndex = a
    Else
    list_nageurs.ListIndex = a + 8
    list_nageurs.ListIndex = a
    End If
     
    End Sub
    à toi de l'adapter à ton combo

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut re
    bonjour merci pour ton code par contre a quoi sert ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim a As Integer 
    a = list_nageurs.ListIndex 
    If list_nageurs.ListCount < a + 9 Then 
        list_nageurs.ListIndex = list_nageurs.ListCount 
        list_nageurs.ListIndex = a 
    Else 
        list_nageurs.ListIndex = a + 8 
        list_nageurs.ListIndex = a 
    End If
    car j'ai bien mon texte qui s'affiche mais je ne peux taper plusieurs lettre cad que si j'ai dans ma liste ddaf dde apres mon 1er d je ne peux pas taper autre chose et j'ai une erreur dans le code ci-dessus a la ligne
    list_nageurs.ListIndex = list_nageurs.ListCount
    " erreur d'execution '380'
    valeur de propriete incorrecte

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: re
    Citation Envoyé par taurus
    car j'ai bien mon texte qui s'affiche mais je ne peux taper plusieurs lettre cad que si j'ai dans ma liste ddaf dde apres mon 1er d je ne peux pas taper autre chose et j'ai une erreur dans le code ci-dessus a la ligne
    Si la saisie se fait directement dans ta liste, et que la première lettre rentrée te positionne sur un élement de ta liste, alors oui, tu ne pourras pas saisir d'autres lettres de manière simple, vu que tu as impacté la zone de texte de ton combo.

    Soit tu passes par une saisie dans une textbox à côté, soit ...
    Je jette un oeil savoir comment contourner ce problème et je te tiens au courant.

    PS : pense aux balises codes

  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Mouais, c'est compliqué à gérer dans la même zone, la saisie de la chaîne de recherche, et le positionnement, je m'emmêle les pinceaux

    Bref, si tu veux faire simple, gère la saisie de ta chaîne de recherche dans un textbox à côté.

    Si qqun d'autre a une solution à proposer, ça m'intéresse aussi

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    ok mais par contre a quoi sert le code que j'ai mis en dernier car sans ca ca marche donc je ne vois pas l'interet?

  9. #9
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par taurus
    ok mais par contre a quoi sert le code que j'ai mis en dernier car sans ca ca marche donc je ne vois pas l'interet?
    Je ne sais pas, mais il est certain que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list_nageurs.ListIndex = list_nageurs.ListCount
    va tomber en erreur 380 à tous les coups, vu que la valeur max de ListIndex, c'est ListCount -1 !
    Donc si ça tombe en erreur et que ça ne te sert pas, tu ne t'en sers pas ...

  10. #10
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Avant de te proposer une solution, je veux juste savoir si ton combo est lié directement à la bdd (propriétés dataSource et dataField renseignées) ou non ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    NON elle n'est pas directement relie a la bdd

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Combo1_Change()
        Dim i As Integer, start As Integer
        start = Len(Combo1.Text)
        For i = 0 To Combo1.ListCount - 1
            If Left(Combo1.List(i), start) = Combo1.Text Then
                Combo1.Text = Combo1.List(i)
            End If
        Next
        Combo1.SelStart = start
        Combo1.SelLength = Len(Combo1.Text)
    End Sub

  13. #13
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Pas mal mais ... j'ai constaté 2 soucis :

    a- il faut tester la longueur de .Text, pour ne pas faire de tests sur une chaine de longueur 0, et gérer la comparaison sur min/MAJ : pas trop dur à gérer :
    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
    Private Sub Combo1_Change()
        Dim i As Integer, start As Integer
     
        start = Len(Combo1.Text)
     
        If start > 0 Then
            For i = 0 To Combo1.ListCount - 1
                If Ucase(Left(Combo1.List(i), start)) = Ucase(Combo1.Text) Then
                    Combo1.Text = Combo1.List(i)
                End If
            Next
     
            Combo1.SelStart = start
            Combo1.SelLength = Len(Combo1.Text)
        End If
    End Sub
    b- ça désactive les touches BackSpace et Suppr, utiles si tu souhaites revenir en arrière dans ta saisie (c'est un peu ça qui m'a cassé les pieds ce matin ...)

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    j'attends de nouvelles propositions

  15. #15
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par taurus
    j'attends de nouvelles propositions
    Un peu "abrupt", comme relance !

    Merci de penser que les personnes qui te propose de l'aide sur ce forum sont bénévoles, qu'elles font ça sur leur temps disponible, et qu'elles ne pas soumises à obligation de résultat.

    Avec le code qui t'a été fourni, je trouve que tu as été pas déjà été pas mal aiguillé. Si tu ne t'en sors pas avec ça, revois ta manière de faire plutôt que d'exiger que l'on te fasse ton code à ta place !!!

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    ok merci @ +

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

Discussions similaires

  1. Comment positionner une combo sur un élément choisi ?
    Par RomainVALERI dans le forum WebDev
    Réponses: 4
    Dernier message: 25/06/2008, 12h16
  2. Réponses: 4
    Dernier message: 13/02/2007, 17h40
  3. Réponses: 4
    Dernier message: 30/10/2006, 17h46
  4. [VB6]Acces au positionnement d'un ctrl sur une fenêtre...
    Par New dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/04/2006, 09h16
  5. Réponses: 2
    Dernier message: 11/01/2005, 15h10

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