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 :

faire des collones dans une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 38
    Par défaut faire des collones dans une listbox
    Bonjour,
    j'ai un code VBA comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    ListBox1.ColumnCount = 5
    ListBox1.ColumnWidths = "50;50;50;50;50"
    ListBox1.List = Sheets("Analytique").Range("A1:E41").Value
    End Sub
    J'ai vu sur le net que je pouvais des separateurs avec ce 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
    Private Sub UserForm_Initialize()
    Dim i As Byte, j As Byte
     
    ListBox1.ColumnCount = 7
    ListBox1.ColumnWidths = "50;15;50;15;50;15;50"
     
    For i = 1 To 20
        ListBox1.AddItem "Ligne" & i
     
        For j = 2 To 7 Step 2
        ListBox1.List(ListBox1.ListCount - 1, j) = i & j
        Next j
     
        For j = 1 To 6 Step 2
        ListBox1.List(ListBox1.ListCount - 1, j) = Chr(124)
        Next j
    Next i
    End Sub
    Mais pouvez-vous m'aider a l'adapter a mon code

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Il serait peut-être plus simple (et propre) d'utiliser le composant ListView, il est je pense d'origine bien que non déclaré par défaut dans VBE.
    Pour l'ajouter à la liste des composant:

    Nom : Ajout Composant VBE.png
Affichages : 243
Taille : 14,0 Ko
    Dans la liste tu cherches Microsoft ListView.

    Il doit y avoir pas mal de tutoriel à sont sujet, je te laisse regarder. Tu trouveras notement des info sur sa propriété "View" configuré en "3-lvwReport", qui permet de faire un affichage comme dans ton explorateur de fichier windows en version Détaillé.


    Sinon, voila le code que tu cherches
    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 UserForm_Initialize()
    Dim i As Byte, j As Byte
    Dim ListRange As Range
     
    Set ListRange = ThisWorkbook.Sheets("Analytique").Range("A1:E41")
    ListBox1.columnCount = 9 '(numéroté de 0 à 8)
    ListBox1.ColumnWidths = "50;15;50;15;50;15;50;15;50"
     
    For i = 1 To 41
        ListBox1.AddItem "Ligne" & i ' création de la ligne et renseignement de la 1ère colonne (0)
     
        'Place les séparateurs dans les colonnes impaires
        For j = 1 To 7 Step 2
        ListBox1.List(ListBox1.ListCount - 1, j) = Chr(124)
        Next j
     
        'Ajoute les donnée dans les colonnes paire de la nouvelle ligne
        For j = 2 To 8 Step 2
        ListBox1.List(ListBox1.ListCount - 1, j) = ListRange.Cells(i, j / 2).Value
        Next j
     
    Next i
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Sinon, si tu tiens au Listbox, fais une copie du champ source de données sur une autre feuille, insère-z-y des colonnes où tu mets ton séparateur et utilise cette feuille comme source de données.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 38
    Par défaut
    Citation Envoyé par Docmarti Voir le message
    Bonjour.

    Sinon, si tu tiens au Listbox, fais une copie du champ source de données sur une autre feuille, insère-z-y des colonnes où tu mets ton séparateur et utilise cette feuille comme source de données.
    Bonsoir,
    au final j'ai pris cette solution.
    Un grand merci pour vos contribution..

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 38
    Par défaut
    Bonsoir j'avais déjà regardé la fonction Listview mais je n'arrive pas l'adapter à mon tableau

    j'ai 5 colonnes
    une ligne de titre en première ligne
    et après j'ai 40 lignes a reproduire dans la Listview

    J'ai ce code prit sur le net qui marche sans modification mais lorsque je l'adapte à mon fichier j'ai un problème:

    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
    Private Sub UserForm_Initialize()
    ' création du listview
    Dim rg As Range
    Dim n As Integer, i As Integer
    
    Set rg = [A1]   'ligne avec les titres
    n = 5   'nb de colonnes de données
    
    With Me.ListView1
    'ajout des titres de colonnes
    For i = 1 To n
    .ColumnHeaders.Add , , rg.Offset(0, i - 1)
    Next i
    
    'ajout des éléments de la 1re colonne
    Set rg = [A2]   '1re ligne avec les données
    Do Until IsEmpty(rg)
    .ListItems.Add , , rg
    'ajout des éléments des autres colonnes
    For i = 1 To n
    .ListItems(rg.Row - 3).ListSubItems.Add , , rg.Offset(0, i)
    Next i
    Set rg = rg.Offset(1, 0)    'prochaine ligne
    Loop
    
    .FullRowSelect = True   'permet de choisir une ligne complète
    .MultiSelect = True     'permet de sélectionner plusieurs lignes
    .View = lvwReport       'format d'affichage des données
    End With
    End Sub
    J'ai modifié les lignes en vert pour mon application sans problème mais en modifiant la ligne du code en rouge j'ai une erreur "erreur d’exécution 35600 index hors limites"

    Que faut-il faire?

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    (J'avais édité mon 1er message avec un code qui rempli un listBox.

    Sinon pour le listView

    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 UserForm_Click()
    Dim iRow As Integer
    Dim TheCell As Range
     
    'On pointe la feuille contenant les données
    With ThisWorkbook.Sheets("Analytique")
        'On place les entêtes
        For Each TheCell In .Range("A1", .Cells(1, .Columns.Count).End(xlToLeft))
            ListView1.ColumnHeaders.Add , , TheCell.Value
        Next
        'On place les données (ici, la colonne A ne doit jamais avoir de vide (sinon prendre une autre colonne)
        For iRow = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
            'On ajoute une ligne
            ListView1.ListItems.Add , , .Cells(iRow, "A").Value
            'On y place les données
            'On boucle sur les cellule de la ligne iRow
            For Each TheCell In .Range(.Cells(iRow, "B"), .Cells(iRow, .Columns.Count).End(xlToLeft))
                ListView1.ListItems(iRow - 1).ListSubItems.Add , , TheCell.Value
            Next
        Next
    End With
     
    End Sub
    Le ListView doit être configuré en View Report.
    Le code est polyvalent, le nombre de ligne et de colonne de ton tableau source peuvent varier. Tu auras peut-être un message d'erreur si le tableau source est vide par contre, à tester.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Comment faire apparaitre des données dans une listbox
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/05/2007, 15h04
  2. Réponses: 3
    Dernier message: 29/08/2006, 12h50
  3. Faire des test dans une base de donnée
    Par kj_83 dans le forum C++Builder
    Réponses: 15
    Dernier message: 06/07/2006, 09h54
  4. [HTML] faire des tabulation dans une liste <select>
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/01/2006, 23h36
  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