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 :

Copier une ligne d'une listbox multicolonne


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut Copier une ligne d'une listbox multicolonne
    Bonjour le forum

    J'ai, dans un Userform, deux listbox a 2 colonnes.
    Je souhaite copier les lignes sélectionnées dans la 1ere listbox dans une deuxieme.
    Or, lorsque je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
        ListBox2.AddItem ListBox1.List(i, 0)
    End If
    Next
    Je ne retrouve que la 1ère colonne dans ma deuxieme listbox, et pas la deuxieme... et j'en ai besoin


    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    au temps pour moi, le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
        ListBox2.AddItem ListBox1.List(i)
    End If
    Next

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour yoord le forum données dans colonne A & B a adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
    Dim t As Variant, i As Long
    Private Sub ListBox1_Click()
    For i = 1 To UBound(t)
    If t(i, 1) = ListBox1 Then
    ListBox2.AddItem t(i, 1)
    ListBox2.List(ListBox2.ListCount - 1, 1) = t(i, 2)
    End If: Next i
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    t = Range("a2:b" & Range("a65536").End(xlUp).Row): ListBox1.List = t
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    Bonjour,

    J'avais essayé ce code, Laetitia,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox2.List(ListBox2.ListCount - 1, 1) = t(i, 2)
    et j'avais une erreur du type : l'indice de liste n'appartient pas a l'objet, ou quelque chose comme ca.

    J'ai solutionné mon problème, avec un code un peu lourd certes, mais qui fonctionne :

    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
    'Pays selectionnés
    For i = 0 To ListBox_cty.ListCount - 1
    If ListBox_cty.Selected(i) = True Then
        ListBox_cty2.AddItem ListBox_cty.List(i, 0)
        ListBox_cty2.AddItem ListBox_cty.List(i, 1)  
    End If
    Next i
     
    'on ajoute l'iso_code a la ligne pays
    For i = 0 To ListBox_cty2.ListCount - 1
        ListBox_cty2.List(i, 1) = ListBox_cty2.List(i + 1)
        i = i + 1
    Next i
     
    'on supprime la ligne contenant uniquement l'iso code
    For i = 0 To ListBox_cty2.ListCount - 1
    On Error Resume Next
        ListBox_cty2.RemoveItem (i + 1)
    Next i
    le premier bloc permettant d'ajouter chaque élément de la listbox1, la listbox1 étant une listbox avec 2 colonnes. donc pour la 1ere ligne, on a l'élément (0,0) de la listbox1, en 2eme ligne l'élément (0,1) et ainsi de suite pour toutes les lignes.
    Les blocs suivant servant juste a copier/supprimer les informations en trop.


    En fait, ce que je voulais faire, c'est juste un tableau() = listbox2.list()
    je sais que ça marche dans l'autre sens, ca prends bien en compte le nombre de colonnes du tableau tableau(), mais pour faire l'inverse ca coince ...

    Merci en tout cas.

    Yoord

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2015, 10h44
  2. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  3. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Copier certaines lignes d'une table vers une autre
    Par TNorth dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/07/2006, 14h31

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