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 :

Impossible de ré-alimenter une listbox à 2 colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Décembre 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Décembre 2016
    Messages : 62
    Par défaut Impossible de ré-alimenter une listbox à 2 colonnes
    Bonjour,

    Je veux simplement ré-alimenter une listbox préalablement remplie mais ça ne fonctionne pas

    Lors de l'initialisation du userform, je rempli ma listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    derniere_ligne = Worksheets("Base articles").Range("A" & Rows.Count).End(xlUp).Row
    lst_articles.List = Worksheets("Base articles").Range("A6:A" & derniere_ligne).Value
    Puis dans une txtbox sur mon userform, lorsque j'appuie sur "Enter", je veux vider la liste et ajouter une ligne avec une valeur dans chaque colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub txt_article_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    If KeyCode = 13 Then 'Si on appuie sur OK dans le champt txt_article
            lst_articles.Clear ' Vide la liste d'article
            lst_articles.AddItem "col 1"
            lst_articles.List(0, 1) = "col 2"
    End If
    End Sub
    Mais avec ce code j'ai systématiquement cette erreur

    Nom : 2024-09-04_10-56-43.jpg
Affichages : 117
Taille : 22,2 Ko

    Si je supprime la ligne de remplissage à l'initialisation, ça fonctionne
    Si je laisse la ligne de remplissage et que je retire la ligne "lst_articles.list" ça fonctionne pour "additem"

    Quelle est mon erreur ?

    En vous remerciant

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu peux passer par un tableau unidimensionnel et l'injecter dans la propriété Column

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub txt_article_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then 'Si on appuie sur OK dans le champt txt_article
            With lst_articles
                .Clear ' Vide la liste d'article
                .ColumnCount = 2
                .Column = Array("col 1", "col 2")
            End With
        End If
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Décembre 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Décembre 2016
    Messages : 62
    Par défaut
    Salut,

    Effectivement ta solution fonctionne mais pourquoi le standard .Additem et .List ne fonctionne pas avec mon code?

    Et si je veux utiliser ta solution dans une boucle comment je dois procéder ?

    En te remerciant

  4. #4
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 509
    Par défaut
    Bonjour,
    Effectivement ta solution fonctionne mais pourquoi le standard .Additem et .List ne fonctionne pas avec mon code?
    1. Vérifier en mode création que la zone de liste comporte bien deux colonnes.
      1. Si une seule colonne alors utiliser la propriété ColumCount et la régler sur deux comme dans l'exemple de joe.levrai


    Et si je veux utiliser ta solution dans une boucle comment je dois procéder ?
    1. Pour une boucle utiliser la propriété ListCount. ListCount -1 correspond au dernier élément de la liste.

    Voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Initialize()
        With ListBox1
            .ColumnCount = 2
            .ColumnWidths = "100,100"
     
            Dim Counter As Long: Counter = 1
            Do While Counter < 11
                .AddItem "First Colum " & CStr(Counter)
                .List(.ListCount - 1, 1) = "Second Colum " & CStr(Counter + 10)
                Counter = Counter + 1
            Loop
        End With
    End Sub
    Bonne programmation...

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Décembre 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Décembre 2016
    Messages : 62
    Par défaut
    Finalement, je me suis résolu à faire des arrays que j'injecte via .list

    Merci pour vos réponses

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

Discussions similaires

  1. [XL-2013] VBA 64 bits - (Débutant) Alimenter une Listbox 2 colonnes à partir d'une feuille excel
    Par yaourt62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/04/2019, 19h43
  2. [XL-2010] Alimenter une listbox par un textbox - 3 colonnes
    Par KINOU94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2016, 15h33
  3. Réponses: 7
    Dernier message: 19/08/2016, 15h06
  4. Réponses: 7
    Dernier message: 01/06/2013, 06h50
  5. Réponses: 0
    Dernier message: 26/05/2013, 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