Microsoft 365 Charger une listview ne VBA

  • Initiateur de la discussion Initiateur de la discussion doudel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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"
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
7
Affichages
106
Réponses
4
Affichages
362
Retour