capacité d'une listview et chargement externe

  • Initiateur de la discussion Initiateur de la discussion nak
  • 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 !

nak

XLDnaute Occasionnel
Bonjour à tous,

Je veux utiliser un listview qui se charge à partir d'un fichier externe (base.xls).

Mon premier problème est une erreur de capacité. Lorsque mon fichier base comporte trop de lignes mon usf plante. J'aimerais pouvoir au moins gérer 1000 lignes.

Mon deuxième problème concernent l'ouverture de mon fichier base.xls (wb). Si je lance plusieurs fois mon usf je vois apparaitre mon fichier base au niveau de visual basic. Cela veux dire que mon fichier reste en mémoire est n'est pas refermé après chargement de la listview.

Voici le code:
Private Sub UserForm_Initialize()
Dim m As Byte, i As Long, x As Long, k As Byte

With ListView1
'--Entête
With .ColumnHeaders
.Clear
.Add , , "Numéro", 80 'titre de la colonne et largeur et alignement
.Add , , "Colonne 2", 50
.Add , , "Colonne 3", 200
End With

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

' Chargement des données
Dim Wb As Workbook
chemin = ThisWorkbook.Path & "\Base.xls" 'ThisWorkbook.Path & "\" 'renvoie le chemin de ce répertoire
'fichier = "Base.xls" 'ici nom du fichier source
Set Wb = GetObject(chemin)
For lig = 2 To Wb.Sheets("Feuil1").Range("A65536").End(3).Row
k = k + 1
ListView1.ListItems.Add k, , Wb.Sheets("Feuil1").Cells(lig, 1)
ListView1.ListItems(k).SubItems(1) = Wb.Sheets("Feuil1").Cells(lig, 2)
ListView1.ListItems(k).SubItems(2) = Wb.Sheets("Feuil1").Cells(lig, 3)
Next
Wb.Close
End With
End Sub
Je joins également les fichiers.

Avez vous une idée à mais problèmes SVP ?

Merci
 

Pièces jointes

Re : capacité d'une listview et chargement externe

Bonsoir,
As tu vraiment besoin de l'index ?
Code:
Private Sub UserForm_Initialize()
Dim m As Byte, i As Long, x As Long, k As Byte
Dim Wb As Object, chemin$
chemin = ThisWorkbook.Path & "\Base.xls" 'ThisWorkbook.Path & "\" 'renvoie le chemin de ce répertoire
With ListView1
    '--Entête
    With .ColumnHeaders
       .Clear
       .Add , , "Numéro", 80 'titre de la colonne et largeur et alignement
       .Add , , "Colonne 2", 50
       .Add , , "Colonne 3", 200
    End With

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

'Chargement des données
'fichier = "Base.xls" 'ici nom du fichier source
    Set Wb = GetObject(chemin)
    For lig = 2 To Wb.Sheets("Feuil1").Range("A65536").End(3).Row
        .ListItems.Add , , Wb.Sheets("Feuil1").Cells(lig, 1)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Wb.Sheets("Feuil1").Cells(lig, 2)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Wb.Sheets("Feuil1").Cells(lig, 3)
    Next
    Wb.Close False
End With
End Sub
Testé avec 20000 lignes et pas de pb...
A+
kjin
 
- 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
174
Réponses
2
Affichages
331
Réponses
3
Affichages
665
Réponses
5
Affichages
565
Réponses
35
Affichages
2 K
Réponses
9
Affichages
584
Retour