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 :

plusieurs colonne a ma list box


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut plusieurs colonne a ma list box
    Bonjour,

    Je m'adresse a vous afin de recevoir une aide sur mon projet.
    Je voudrais remplir une listbox conprenant 2 colonnes dont le nombre de ligne est variable.
    J'utilise myArray pour pouvoir ajouter mes entrées a ma liste sur 2 colonne puis j'utilise .list pour les affecter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim MyArray (2, 2)
     
    sub liste()
    MyArray (0, 0) = ......
    MyArray (1, 0) = ......
     
    MyArray (0, 1) = .....
    MyArray (1, 1) = .....
     
    ListBox.list() = MyArray
    end sub
    Le probleme est que de cette maniere le nombre de ligne est fixe. J'ai donc utilisé additem pour entrée des données dont le nombre est variable via une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub list ()
     
    For i = 0 to fin
         ListBox.additem "xxx", i
    Next i
     
    end sub
    Mais dans ce cas je n'entre des données que dans une seule colonne comme faire pour inserer mes données dans 2 colonnes ?

    Merci a ceux qui pourront m'aider a resoudre ce problème.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir ...

    merci de vérifier ta version de VB :

    Comment savoir si l'on utilise VBA (Visual basic pour application) ou VB6 ?

    essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ListBox1.ColumnCount = 2
     For i = 0 To 5
        ListBox1.AddItem "xxx-" & i
        ListBox1.Column(1, i) = "yyy-" & i
     
     Next

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Bonjour,

    tout d'abord merci pour ta réponse. En ce qui concerne ma version de VB il s'agit d'un projet VB6.

    J'ai essayé ta solution cela ne marche pas il ne reconnait pas le columncount. Je vous ai donné un exemple simplifié mais je vais taché d'étre le plus clair possible avec mon code.

    Je souhaite afficher dans une ListBox le resultat d'un requete dont chaque valeur a un chiffre index associé mais non visible dans la list d'ou l'utilisation d'une seconde colonne.
    Voici le code en question auquel j'ai mis ta solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Me.Listopeheure.ColumnCount = 2
    While Not (rsADO2.EOF)
       With Me.Listopeheure
             .AddItem "Le " & rsADO2("Date_chrono") & " à " & Right("00" & Trim(Str(rsADO2("Debut_chrono"))), 2) & ":" & Right("00" & Trim(Str(rsADO2("Debmin_chrono"))), 2), ind1
             .Column(1, ind1) = rsADO2("Index")
       End With
       rsADO2.MoveNext
    Wend
    En esperant que cela est plus clair pour vous.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.list() = MyArray
    fonctionne bien avec ta liste box ?

    j'ai cru que tu utilisé une listbox de msform2.. (du VBA...)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.list() = MyArray
    Ce code fonctionne sur du Vba je ne l'ai pas tester sur du VB6 je savais que je ne pourrais pas l'utilisé dans mon cas.

    J'ai donné ce code a titre d'exemple pour essayé d'etre le clair possible concernant mes attentes.

  6. #6
    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,

    Et pourquoi n'utiises tu pas la propriéte itemdata?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Me.Listopeheure.ColumnCount = 2
    While Not (rsADO2.EOF)
       With Me.Listopeheure
             .AddItem "Le " & rsADO2("Date_chrono") & " à " & Right("00" & Trim(Str(rsADO2("Debut_chrono"))), 2) & ":" & Right("00" & Trim(Str(rsADO2("Debmin_chrono"))), 2), ind1
             .ItemData(Listopeheure.NewIndex) = rsADO2("Index")
       End With
       rsADO2.MoveNext
    Wend
    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Merci iclic pour ta réponse. Si je comprend bien avec ItemData on peut affecter une valeur d'index a une entrée de la liste. Ce qui me sera utile je vais tester cette soluion des maintenant.

    Petite question : comment récupère t on la valeur de l'itemdata ensuite ?

    Je souhaite également savoir comment faire pour créer plusieurs colonnes (pour une autre partie de mon code) donc si quelqu'un a une solution pour cela.

  8. #8
    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
    De Blade76

    Je souhaite également savoir comment faire pour créer plusieurs colonnes
    Regarde un peu dans la MSDN,contrôle MSFlexGrid, si celà
    ne ferait pas ton affaire.

    Le contrôle Microsoft FlexGrid (MSFlexGrid) affiche et opère sur des données placées dans des tableaux. Il offre une flexibilité totale en matière de tri, de fusion et de formatage de tableaux contenant des chaînes et des images.
    ...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Petite question : comment récupère t on la valeur de l'itemdata ensuite ?
    J'ai trouvé la réponse a ma question avec un peu de reflexion

    Je ne clôture pas ce sujet car je cherche toujours comment créer 2 ou + colonnes a ma liste.

    Je vais regarder la solution MSFlexGrid proposé par iclic mais pour l'heure un bon travail ne se fait que le ventre plein.

    Merci de vos réponse je vous tiens au courant de l'avancement.

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Petite question : comment récupère t on la valeur de l'itemdata ensuite ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    nomvariable = ItemData(ListBox.ListIndex)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    merci iclic mais comme noté dans mon message précedent j'avais trouvé la solution en reflechissant un peu.

    Je planche actuellement sur ta solution du controle MSFlexGrid pour le multicolonne de ma liste.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Je viens de regarder l'utilisation du Flexgrid mais ce n'est pas ce que je recherche dans mon cas.

    Le flexgrid affiche un tableau or ce que je recherche c'est une liste dont la première colonne est affiché mais les autres sont masquée. Je pense que ce sera plus compréhensible avec un exemple.

    colonne 1 (visible) : A + B + C
    colonne 2 (non visible) : A
    colonne 3 (non visible) : B
    colonne 4 (non visible) : C

    j'espère être clair dans mes explications.

  13. #13
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Bonjour,

    je ne vois pas l'intérêt de prévoir des colonnes supplémentaires si tu ne les rends pas visibles. Pour reprendre ton exemple, tes valeurs A, B et C sont bien stovkées en mémoire dans un tableau ? Il te suffit donc de les concaténer avec un séparateur type "/" ou autre et tu affiches A, B et C ensemble dans une seule colonne comme tu le souhaites.

  14. #14
    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
    Re,

    Une solution? mais il y en a peut=être d'autres.

    Tu mets dans une variable:
    ex:nomvariable = space(30) '30 est un exemple
    Lset nomvariable = colonne1
    Tu ajoutes un séparateur (# ou * ou / ...)
    Tu ajoutes de la même façon avec un Lset ta 2e colonne ,puis la 3e etc...
    Tu donnes à ta listbox une largeur (Width) inférieure à la longueur totale de ta chaîne
    (il faut un peu chercher ce qui convient)
    Ta listbox affiche la 1ère colonne et le reste n'est pas visible.
    Et pour différencier tes colonnes un INSTR sur le séparateur te permet de les retrouver.

    Si tu n'as pas compris les explications ,je peux te donner un exemple

    A+

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 29/08/2011, 09h13
  2. [AC-2007] En-tête de colonne sur plusieurs lignes dans une list box
    Par Rémi GAUDINAT dans le forum IHM
    Réponses: 2
    Dernier message: 25/10/2010, 11h52
  3. Création de plusieurs colonnes dans une List
    Par WibiMaster dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 21/06/2010, 14h45
  4. [A-03] Donnees en colonne dans une List Box
    Par Jean.Alexis dans le forum VBA Access
    Réponses: 4
    Dernier message: 26/03/2009, 12h21
  5. Réponses: 6
    Dernier message: 14/05/2007, 15h34

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