Alors voilà, j'ouvre une nouvelle discussion pour un problème que j'avais déjà cité aupravant mais comme le titre de ma précédente discussion ne correspondait pas à mon problème, je prefère reprendre la conversation ici...

J'ai crée une listview, qui m'affiche très bien les données de ma table ACCESS si elle ne contient pas trop d'enregistrement. Mais lorsque j'essaye de faire la meme chose avec une table qui contient 200.000 enregistrements, ça prend un temps fou, pendant lequel mon pc est bloqué, je ne sais plus rien faire....

Est-ce que qqu'un a déjà rencontré ce problème? Comment améliorer ça?


Voilà mon code pour l'affichage de ma 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
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
53
 
Public Sub RemplirListView(MaListview As ListView, Optional NomLigne As String, Optional NomColonne As String)
 
 
    Dim I       As Long
    Dim j       As Long
    Dim Itmx    As ListItem
 
    With MaListview
        .FullRowSelect = True
        .GridLines = False
        .HideSelection = False
        .LabelEdit = lvwManual
        .MultiSelect = False
        .AllowColumnReorder = False
        .ListItems.Clear
        .ColumnHeaders.Clear
        .Visible = False
    End With
 
    If rsADO.Fields.Count > 0 Then
            If MaListview.Tag > 0 Then
                MaListview.ColumnHeaders.Add , , NomLigne & "/" & NomColonne
                I = 1
                MaListview.GridLines = True
            Else
                I = 0
            End If
            For N = I To rsADO.Fields.Count - 1 
                 MaListview.ColumnHeaders.Add , , rsADO.Fields(N).Name
            Next N
 
            If rsADO.RecordCount > 0 Then
                 While Not rsADO.EOF
                    Set Itmx = MaListview.ListItems.Add(, , CStr(rsADO.Fields(0).Value))
                        For j = 1 To rsADO.Fields.Count - 1
                           Itmx.SubItems(j) = IIf(LenB(rsADO.Fields(j).Value) > 0, rsADO.Fields(j).Value, vbNullString)
                           DoEvents
                        Next j
 
                  rsADO.MoveNext
                  Wend
 
                On Error GoTo Err
           End If
    End If
 
MaListview.Visible = True
Exit Sub
Err:
    MsgBox ("Erreur: Impossible de charger les données")
 
End Sub