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 :

combobox en VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 56
    Par défaut combobox en VB6
    Salut!
    j'aimerais afficher des valeurs en fonction d'un choix.
    Pour ce faire,je me suis muni de deux combo box:
    le 1er contient une liste de régions et le 2èm contient une liste de villes.
    Alors,j'aimerais qu'un fonction de chaque région choisie,je n'ai dans l'autre combo que la liste des villes relevant de cette région.
    Et depuis je suffoque quand même
    Alors merci de me guider car je ne m'en sors vraiment pas
    Merci

  2. #2
    Membre confirmé Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Par défaut
    Selon moi, il faut que tu crées une base de données avec 2 tables relié par une relation un à plusieurs :

    Région : NumRegion, Nom
    Ville : NumRegion, NumVille, Nom

    Ensuite, lors du chargement de ta feuille, tu crées une requête SQL avec une jointure sur NumRegion.

    La première combobox, tu mets les regions, et à chaque fois que la combobox est modifié, tu fait un filtre sur ton recordset telle que Nom=Nom selectionné puis tu affiches dans le second les villes.

    si tu ne sais pas faire de connexion BD VB6, regarde les tutos du site, fait des recherches puis reviens nous voir une fois que tu auras un peu maitrisé tout cela.

  3. #3
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Salut, moi j'ai une alternative pour ne pas devoir utiliser de DB... Tout réside dans la méthode itemData.

    Au moment du design, tu construis
    - combo1 (région), chaque région reçoit un itemdata différent. Laisse une première ligne vide et assigne lui itemdata =0
    - combo2 (combo de travail invisible), contient toutes les villes possibles, le itemdata de chaque élément est le itemdata de la région qui lui correspond.
    - combo3 (villes) est vide au départ
    Avec ça, tu mets le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Combo1_Click()
    Dim temp As Long
    Dim i As Long
    temp = Combo1.ItemData(Combo1.ListIndex)
    Combo3.Clear
    For i = 0 To Combo2.ListCount - 1
        If Combo2.ItemData(i) = temp Then Combo3.AddItem Combo2.List(i)
    Next i
    End Sub
    Bonne chance

  4. #4
    Membre confirmé Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Par défaut
    pas bête du tout... je n'y avais pas pensé... Je vais noter cela quelque part : ça peut être utile.


    Cependant :

    "pourquoi faire simple lorsqu'on peut faire compliqué ?"

    ok, je sors

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Pour compléter la méthode de Anneca

    Tu pourrais faire un fichier texte (tout simplement avec le bloc-notes)
    nommé Région et tu écris par ex
    Provence,1
    (1 étant l'itemdata)
    etc...

    et un deuxième fichier texte nommé ville et tu écris par ex
    Nice,1
    Cannes,1
    (1 étant l'itemdata correspondant à la région)
    etc..

    Dans le Form_load

    Laisse une première ligne vide et assigne lui itemdata =0 comme le dit Anneca
    Puis tu vas lire le 1er fichier texte
    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
    dim i as integer
    dim chaine(2)
    
    'bien sur ouvrir d'abord les fichiers
    
     Do While Not EOF(N°buffer)
         for i=1 to 2
                Input #N°buffer, chaine(i)
         next
    Combo1.AddItem chaine(1)
    Combo1.ItemData chaine(2)
    'et tu vas remplir ta combo1
    
       Loop
    idem avec le 2e fichier texte
    pour remplir la combo2

    L'avantage des fichiers c'est que si tu as une modification à faire dans les noms des régions et ou des villes et ou du numéro correspondant celà se fait très facilement avec le bloc-notes.

    Maintenant,le combobox invisible pourrais être tout simplement une Listbox

Discussions similaires

  1. [VB6] - Propriété Style d'une ComboBox
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/11/2005, 16h33
  2. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  3. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  4. [VB6] suggestion des entrés dans un combobox
    Par s.rais dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/02/2004, 15h32
  5. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 09h55

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