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 :

Remplir une listview avec listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut Remplir une listview avec listbox
    Bonjour tout le monde,

    ci dessous le code pour remplir ma listview

    Je souhaite remplir la première colonne avec un textbox
    La deuxième avec des items selectionnés dans ma listbox
    et 8 autres avec des données d'une feuille de calcul

    j'ai alors essayé ce code avec lequel j'espérais qu'il me multiplie les lignes par le nombre d'items selectionnés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     For i = LBound(lofc, 1) To UBound(lofc, 1)
    .ListItems.Add , , Numlofc
            For X = 0 To Lb_eqptlofc.ListCount - 1
                If Lb_eqptlofc.Selected(X) = True Then
               .ListItems(i).ListSubItems.Add , , Lb_eqptlofc.List(X)
                     For j = 3 To 10
                     .ListItems(i).ListSubItems.Add , , lofc(i, j)
                     Next
                End If
            Next
     Next
    Par exemple j'ai 8 colonnes et 10 lignes sur ma feuille avec laquelle je rempli ma listview,
    Or je selectionne 2 items dans ma listbox

    je voudrais donc 10 colonnes de 20 lignes dans ma listview = ( 8 colonnes de ma feuille de calcul + 1 pour le ou les items selectionné(s) + 1 pour le texte en textbox ) et (10lignes * 2 items)

    Je n'arrive pas à obtenir ce resultat

    Merci d'avance

    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
     
    Private Sub UserForm_Activate()
    Dim derl%
    Dim lofc()
    Dim i%
    Dim X As Integer
     
    Set o = Worksheets("menu").LB_eqpt
     
    derl = Worksheets("NewLOFC").Cells(Rows.Count, 3).End(xlUp).Row
    lofc = Worksheets("NewLOFC").Range("A2:J2" & derl).Value
        '----- remplissage ListView------------------------
        With ListView1
            'Définit le nombre de colonnes et Entêtes
            With .ColumnHeaders
                'Supprime les anciens entêtes
                .Clear
                'Ajoute 3 colonnes en spécifiant le nom de l'entête
                'et la largeur des colonnes
                .Add , , "n_lofc", 44
                .Add , , "n_eqpt", 44
                .Add , , "n_op", 41
                .Add , , "design_Op", 42
                .Add , , "exs_sur", 42
                .Add , , "fab", 42
                .Add , , "surv_lot1", 42
                .Add , , "MOE", 42
                .Add , , "MOA", 42
                .Add , , "ONA", 42
            End With
            .View = lvwReport                                                         ' Affichage en mode Rapport
            .Gridlines = True                                                         ' Affichage d'un quadrillage
            .FullRowSelect = True
     
            For i = LBound(lofc, 1) To UBound(lofc, 1)
            .ListItems.Add , , Numlofc
            For X = 0 To Lb_eqptlofc.ListCount - 1
            If Lb_eqptlofc.Selected(X) = True Then
            .ListItems(i).ListSubItems.Add , , Lb_eqptlofc.List(X)
            For j = 3 To 10
            .ListItems(i).ListSubItems.Add , , lofc(i, j)
            Next
            End If
            Next
            Next
     
        End With
        '--------------------------------------------------
        'Spécifie l'affichage en mode "Détails"
        ListView1.View = lvwReport
        ListView1.LabelEdit = 1
    End Sub

  2. #2
    Membre confirmé
    Femme Profil pro
    Ingénieur génie industriel
    Inscrit en
    Novembre 2016
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur génie industriel

    Informations forums :
    Inscription : Novembre 2016
    Messages : 88
    Par défaut
    J'ai procédé d'une autre façon,

    j'ai inclus les données directement sur ma feuille et avec plusieurs conditions + un "Reboot" j'ai pu obtenir ce qu'il me fallait

    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
    Private Sub Valider_Click()
    Dim derl%
    Dim derl2%
    Dim lofc()
    Dim tabl()
    Dim i%
    Dim j As Long
    Dim cpt As Integer
     
    Application.EnableEvents = False
     
    Reboot
     
    derl = Worksheets("NewLOFC").Cells(Rows.Count, 3).End(xlUp).Row
    lofc = Worksheets("NewLOFC").Range("C2:J" & derl).Value
    derl2 = Worksheets("NewLOFC").Cells(Rows.Count, 2).End(xlUp).Row
     
    For X = 0 To Lb_eqptlofc.ListCount - 1
    cpt = cpt - (Lb_eqptlofc.Selected(X))
    Next X
     
    For j = 1 To cpt - 1
    derl = Worksheets("NewLOFC").Cells(Rows.Count, 3).End(xlUp).Row
    Worksheets("NewLOFC").Cells(derl + 1, 3).Resize(UBound(lofc, 1), UBound(lofc, 2)) = lofc
    Next
     
    For X = 0 To Lb_eqptlofc.ListCount - 1
    For i = LBound(lofc, 1) To UBound(lofc, 1)
    If Lb_eqptlofc.Selected(X) Then
    derl = Worksheets("NewLOFC").Cells(Rows.Count, 2).End(xlUp).Row
    Worksheets("NewLOFC").Cells(derl + 1, 2) = Lb_eqptlofc.List(X)
    End If
    Next
    Next
     
    For i = LBound(lofc, 1) To UBound(lofc, 1)
    Worksheets("NewLOFC").Cells(i + 1, 1) = Numlofc.Value
    Next
     
    Refresh
     
    End Sub
    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
    Sub Reboot()
    Dim derl%, derl2%
    derl = Worksheets("NewLOFC").Cells(Rows.Count, 3).End(xlUp).Row
    derl2 = Worksheets("NewLOFC").Cells(Rows.Count, 2).End(xlUp).Row
     
    Worksheets("NewLOFC").Range("A2:A2" & derl2).ClearContents
    Worksheets("NewLOFC").Range("B2:B2" & derl2).ClearContents
     
    Set d = CreateObject("Scripting.Dictionary")
    Set début = Cells(2, 3)
    a = Range(début, début.End(xlDown))
    For Each c In a
       d(c) = ""
    Next c
    Range(début, début.End(xlDown)).ClearContents
    début.Resize(d.Count, 1) = Application.Transpose(d.keys)
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2013, 16h59
  2. [XL-2003] Remplir une listView avec une autre ListView
    Par monichou86 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/12/2009, 10h56
  3. Remplir une ListView avec le contenu d'une feuille
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/02/2008, 11h50
  4. Remplir une ListView avec le contenu d'une requête
    Par callo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2006, 08h44
  5. Remplir une ListView avec une BD
    Par manikou dans le forum MFC
    Réponses: 1
    Dernier message: 17/05/2005, 09h48

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