Microsoft 365 Charger une listview ne VBA

doudel

XLDnaute Nouveau
Bonsoir,
Je tente de charger une listview via un code vba. Cette listview doit être alimenter par un tableau disponible dans une feuille Excel. J'ai mis une variable pour sélectionner la feuille mais ce n'est pas celle-ci qui est utilisée mais celle présente dans l'onglet sélectionné. Ai-je fait une erreur ?

Merci

VB:
Private Sub UserForm_Initialize()
Call AlimenterLv
End Sub

Sub AlimenterLv()

Dim f As Worksheet
Dim Lr As Long
Dim Ligne As Integer
Dim j As Integer
Dim i As Integer

Set f = ThisWorkbook.Sheets("BD")

With Me.ListView1
.ListItems.Clear

With .ColumnHeaders
.Clear
For j = 1 To Range("xfd1").End(xlToLeft).Column
.Add , , Cells(1, j)
Next j
End With

.View = lvwReport
.Gridlines = True
.FullRowSelect = True

Lr = f.Range("A" & Rows.count).End(xlUp).Row
If Lr = 2 Then Exit Sub

End With

Set f = Nothing

End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Doudel,
Si c'est la boucle For Next qui alimente votre listview, alors l'erreur vient du fait que vous ne référencez pas la feuille d'origine. A essayer :
VB:
Set f = ThisWorkbook.Sheets("BD")
With Me.ListView1
    .ListItems.Clear
    With .ColumnHeaders
        .Clear
        For j = 1 To f.Range("xfd1").End(xlToLeft).Column
            .Add , , f.Cells(1, j)
        Next j
    End With
End Sub
Cells(1, j) fait référence à la feuille active
f.Cells(1, j) fait référence à la feuille "BD"
 

JM27

XLDnaute Barbatruc
Bonsoir
tu as documenté les en-tête des colonnes de la listview mais pas les item et les subItem

Chaque ligne d'une ListView peut être définie en 2 parties:
ListView1.ListItems(x) spécifie la ligne x et la 1ere colonne de cette ligne.
ListView1.ListItems(x).ListSubItems(y) permet de spécifier les colonnes adjacentes. Par exemple ListView1.ListItems(5).ListSubItems(1) indique la 2eme colonne dans la 5eme ligne de la ListView.

Joindre un fichier serait bien utile
 

doudel

XLDnaute Nouveau
Bonsoir Doudel,
Si c'est la boucle For Next qui alimente votre listview, alors l'erreur vient du fait que vous ne référencez pas la feuille d'origine. A essayer :
VB:
Set f = ThisWorkbook.Sheets("BD")
With Me.ListView1
    .ListItems.Clear
    With .ColumnHeaders
        .Clear
        For j = 1 To f.Range("xfd1").End(xlToLeft).Column
            .Add , , f.Cells(1, j)
        Next j
    End With
End Sub
Cells(1, j) fait référence à la feuille active
f.Cells(1, j) fait référence à la feuille "BD"
Merci syvalnu, ça fonctionne maintenant
 

doudel

XLDnaute Nouveau
Bonsoir
tu as documenté les en-tête des colonnes de la listview mais pas les item et les subItem

Chaque ligne d'une ListView peut être définie en 2 parties:
ListView1.ListItems(x) spécifie la ligne x et la 1ere colonne de cette ligne.
ListView1.ListItems(x).ListSubItems(y) permet de spécifier les colonnes adjacentes. Par exemple ListView1.ListItems(5).ListSubItems(1) indique la 2eme colonne dans la 5eme ligne de la ListView.

Joindre un fichier serait bien utile
Je vais tenter d'améliorer mon code et de vous envoyer un fichier complet. Je cherche également à mettre un filtre sur une colonne afin de n'afficher que les lignes correspondantes
 

Discussions similaires

Réponses
1
Affichages
119