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

Macros et VBA Excel Discussion :

Affectation de valeurs dans une Listbox mutli-colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut Affectation de valeurs dans une Listbox mutli-colonnes
    Bonjour à tous,

    Dans un autre sujet, je me posais le problème de l'instanciation d'un même Userform, afin de générer du contenu disons, "dynamique" hum. Le problème qui se pose désormais est une problème d'affectation. En effet, afin de remplir mes différentes instances d'un userform, je remplis deux listbox multicolonnes qui chacunes reçoivent un type de résultat (chacun répondant à un critère).

    Il se trouve que j'ai voulu ajouter la fonctionnalité d'impression de résultats, indépendamment du nombre de résultats, d'où ma volonté de générer plusieurs pages de résultats, et donc passer par une instanciation de userform (le userform représentant finalement ma page à imprimer). Jusque-là, je voulais gérer la chose sur une seule page, et cela marchait parfaitement avec le code représentant mon userform. Les résultats s'annonçant parfois plus importants que la place possible sur un seul userform (inutile de me demander d'agrandir le userform et de faire plus de place, c'est impossible ), il me faut donc me confronter au passage de la génération multipages, concept résolu, mais dont l'affectation me pose problème, pour un soucis que je n'arrive pas à identifier ...

    Voici le code source me donnant une erreur (j'ai simplifié les noms de variables et isolé la ligne posant problème). Je rappelle que j'ai testé toutes les autres variables, et donnent des résultats, elles stockent bien normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myForms(myCount).refLbox.Column(1, lignRefBox) = Worksheets("Liste").Cells(nbLign, nbCol).value
    myForms représente le tableau indexant les différentes instances de userform, myCount représente l'indice publique de userform, refLbox représente ma listbox multicolonnes, lignRefBox le numéro de ligne dans la listbox multi-colonnes, nbLign et nbCol représentent deux variables utilisées dans mon programme de recherche et de correspondance, elles retournent des valeurs sans aucun problème.

    J'ai en outre essayé une autre méthode, qui ne plante cette fois-ci pas au déroulement de programme, mais qui n'arrive pas à s'afficher concrètement (la ligne est vide) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myForms(myCount).refLbox.AddItem ("" & ";" & "" & ";" & "TEST" & ";" & "")
    En effet, je dispose de 4 colonnes, et j'ai tout autant testé de mettre du texte dans les 4 colonnes, le résultat est le même, à l'affichage ou à l'impression que dalle. Et pourtant, les lignes sont "débloquées" à l'intérieur de ma Listbox, je peux cliquer sur les lignes. Et je n'ai évidemment pas configuré la couleur de la police en blanc ...

    Si quelqu'un a des idées sur le pourquoi du comment, je suis bien preneur ... merci d'avance !

    PS : je tenais aussi à préciser, que j'ai bien ajouter un item avant de vouloir me référer à une des colonnes, logique ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myForms(myCount).refLbox.AddItem ("")

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Matoumass,
    Je ne réponds pas directement à ta question mais tu peux utiliser cette méthode pour remplir tes colonnes.
    Si les données sont ajoutées, tu réinitialises tes combos et ajoute la donnée au tableau.
    Pour vider tes listes, c'est "ListBox1.Clear"

    Je te mets le code à placer dans la feuille de code de l'userform
    Dans l'userform, tu places deux listes, ListBox1 et ListBox2, et deux boutons CommandButton1 et CommandButton1.
    Exécute.
    Tableau est placé en tête pour ne pas être vidé lorsque tu ré-initialises Liste1
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Dim Tableau(7, 3)
     
    Private Sub CommandButton1_Click()
    ListBox1.Clear
    End Sub
     
    Private Sub CommandButton2_Click()
    init
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim i As Single
         'Pour deux listes de 3 colonnes
        ListBox1.ColumnCount = 3 'fixe le nombre de colonnes
        ListBox2.ColumnCount = 5
        'Pour remplir la première colonne d'un index par exemple ou
        'si tu prends tes données sur une feuille de calculs Excel
        For i = 0 To 4 'pour cinq lignes
            Tableau(i, 0) = i + 1
        Next i
     
        'Pour remplir les colonnes 2 et 3 de ton tableau
        Tableau(0, 1) = "Toto"
        Tableau(1, 1) = "Néné"
        Tableau(2, 1) = "Titi"
        Tableau(3, 1) = "Mimi"
        Tableau(4, 1) = "Gégé"
     
        Tableau(0, 2) = "25/12/1998"
        Tableau(1, 2) = "15/05/1999"
        Tableau(2, 2) = "07/09/1981"
        Tableau(3, 2) = "27/10/1997"
        Tableau(4, 2) = "30/06/1984"
     
        'Pour remplir ta liste par ligne
        ListBox1.List() = Tableau
     
        'Pour remplir ta liste par colonne
        ListBox2.Column() = Tableau
    End Sub
     
    Sub init()
        Tableau(5, 0) = 6
        Tableau(6, 0) = 7
     
        Tableau(5, 1) = "Roro"
        Tableau(6, 1) = "Riri"
     
        Tableau(5, 2) = "12/07/1978"
        Tableau(6, 2) = "02/11/1971"
     
        'Pour remplir ta liste par ligne
        ListBox1.List() = Tableau
     
    'Reste sans effet si tu n'as pas "vidé" (clear) la liste 2
        'Pour remplir ta liste par colonne
        ListBox2.Column() = Tableau
    End Sub
    Tu testes et tu nous dis
    Avec Additem ? Tu as un exemple
    En espérant que ça t'aide.
    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut
    Bonjour,

    Tout d'abord merci pour tes exemples et tes conseils ! J'ai regardé les exemples, ça a globalement conforté mes connaissances en la matières, mais je dois dire que la faille venait d'une erreur humaine bien bête.

    Je me suis en fait trompé en initialisant mon indice de ligne à 1 au lieu de 0 (qui est l'indice de la première ligne ...). Je sais bien ce que tout le monde pense, mais j'ai pourtant passé un temps fou à tout vérifier ...

    Je dois dire que cela m'aura appris beaucoup de choses, mon appli n'est pas finie mais j'ai franchi un cap en concevant un système de génération dynamique de userform remplis au fur et-à-mesure ! Et j'en suis bien content !

    Merci encore et à bientôt !

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

Discussions similaires

  1. Bouton qui selectionne une valeur dans une listbox
    Par Jimmy_S dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/12/2007, 16h00
  2. Réponses: 1
    Dernier message: 05/06/2007, 20h54
  3. Réponses: 10
    Dernier message: 23/05/2006, 17h42
  4. [VB.NET]SourceGrid et affectation de valeurs dans une String
    Par Bourbaky dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/03/2006, 20h41
  5. Attribuer des valeurs dans une ListBox
    Par OjBarbare dans le forum MFC
    Réponses: 5
    Dernier message: 06/12/2005, 11h28

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