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

IHM Discussion :

[Formulaire]Comment utiliser une zone de liste (combobox) intelligemment?


Sujet :

IHM

  1. #1
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut [Formulaire]Comment utiliser une zone de liste (combobox) intelligemment?
    Bonjour,

    J'ai un formulaire avec 2 zones de listes.

    La première contient de contenu d'une table.
    La deuxième est vide.

    Je veux que l'utilisateur puisse transférer tous les items de la première liste à la deuxième en cliquant sur un bouton ou juste un item de la première liste à la deuxième liste en cliquant sur un autre bouton (voir le fichier joint)

    Pour transférer tous les items j'utilise ce code-çi:
    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
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
     
    Set db = CurrentDb()
     
    strSQL = "SELECT Code,Nom FROM T_PILOT_MRC;"
    Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
     
    Do Until rs.EOF
     
    lstPourMAJ.AddItem (rs("Code"))
     
    rs.MoveNext
    Loop
     
    rs.Close
    db.Close
    Mais je ne suis pas capable de faire apparaître le champ "Nom" dans la deuxième colonne de la deuxième liste. Je n'arrive pas à trouver de l'information pertinente sur la méthode "AddItem".

    Est-ce que qqun sait comment faire?
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour sélectionner des données dans un recordset, il faut spécifier que les données se trouvent dans un champ.

    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    rs("Code") fonctionne très bien. J'ai dans la première colonne de ma liste tous les codes de la table, mais je voudrais avoir dans la deuxième colonne les noms correspondants, mais je ne sais pas comment utiliser le "AddItem". Finalement je voudrais que ma deuxième zone de liste contienne les informations de la première zone de liste (donc l'information des 2 colonnes).

    Est-ce que je suis assez claire, je ne sais pas trop comment l'expliquer...

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Avec une liste de choix qui contient les éléments, il n'est pas prévu d'avoir deux colonnes.
    Additem est utilisé pour remplir une liste de choix avec une seule colonne.

    Si tu veux faire autrement, il faut passer par un table temporaire, ou cocher tes éléments dans la table d'origine.

    Juste une question,

    MRC, c'est Maintenance Repair Code ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    voilà mon exemple:

    Deux Zone de liste: "Origine", "Destinataire" (avec deux colonnes)
    Deux Bouton: AjoutUn, AjoutTout
    dont voici leur code:

    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
    Private Sub AjoutTout_Click()
    For i = 0 To Origine.ListCount - 1
        Destinataire.AddItem Origine.Column(0, i) + ";" + Origine.Column(1, i)
    Next i
    For i = 0 To Origine.ListCount - 1
        Origine.RemoveItem (0)
    Next i
    End Sub
     
    Private Sub AJoutUn_Click()
    Dim varItem As Variant
    Dim ListItem As New Collection
     
    For Each varItem In Origine.ItemsSelected
        Destinataire.AddItem Origine.Column(0, varItem) + ";" + Origine.Column(1, varItem)
        ListItem.Add varItem
    Next varItem
     
    For i = 1 To ListItem.Count
        Origine.RemoveItem (ListItem(ListItem.Count))
        ListItem.Remove (ListItem.Count)
    Next i
    End Sub
    remarque:
    .Origine de la source: liste de valeurs
    .selection multiple: simple
    .la zone de liste destination est une copie de la zone de liste original pour être sur d'avoir les deux colonnes au même format histoire de pas oublier une colonne

    reste a l'adapter à l'origine source : table/requete car il me semble que la selection multiple n'est pas possible autrement que par liste de valeurs sinon il te reste à recopier les valeurs dans la liste de valeurs, car la selection multiple c'est sympas.

  6. #6
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Merci Vodiem, ca semble etre ce que j'ai de besoin! Je regarde si ca marche dans un instant.

    Heureux-Oli: MRC = Municipalités Régionales de Comté.

  7. #7
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    J'ai réussi à faire ce que je voulais!

    Voilà la façon de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call lstCodeMRC.AddItem(rs("Code") & ";" & rs("Nom"))
    Merci à vous deux et bonne journée

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/12/2007, 13h36
  2. Réponses: 6
    Dernier message: 26/03/2007, 09h42
  3. Réponses: 45
    Dernier message: 06/03/2007, 16h30
  4. Comment imprimer une zone de liste?
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/01/2006, 13h24
  5. [formulaire] Rafraichissement d'une zone de liste
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2005, 12h39

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