Listview qui rame ou plante Excel
Bonjour,
le code ci dessous me permet d'effectuer une recherche et d’afficher le résultat dans une listview,
mais
cela rame énormément à l'affichage du résultat avec un fort scintillement,parfois cela plante même excel.
Ma base de donnée n'est si importante,quelques 300 lignes.
Quelqu'un à une idée du pourquoi du comment cela met autant de temps,
et comment y remédier?
merci , d'avance
Private Sub recherche_Click()
Dim plage As Range, cell As Range
Dim recherche As String, adresse As String ', Col As String
Dim Ligne As Long
Dim cel As Range
'Dim C As Range
Dim Col As Byte
Col = LabelN°col.Caption
Ligne = Feuil22.Cells(Rows.Count, Col).End(xlUp).Row
recherche = CbxRecherche2.Value
Me.ListView2.ColumnHeaders.Clear
Me.ListView2.ListItems.Clear
If recherche = "" Then Exit Sub
Set plage = Feuil22.Range(Cells(2, Col), Cells(Ligne, Col))
With plage
Set cel = .Find(what:=recherche, lookin:=xlValues, lookat:=xlPart)
If Not cel Is Nothing Then
adresse = cel.Address
Do
With Me.ListView2
.ColumnHeaders.Add , , Feuil22.Range("c1"), Feuil22.Range("c1").Width
.ColumnHeaders.Add , , Feuil22.Range("b1"), Feuil22.Range("b1").Width
.ColumnHeaders.Add , , Feuil22.Range("a1"), Feuil22.Range("a1").Width
.ColumnHeaders.Add , , Feuil22.Range("d1"), Feuil22.Range("d1").Width
.ColumnHeaders.Add , , Feuil22.Range("e1"), Feuil22.Range("e1").Width
.ColumnHeaders.Add , , Feuil22.Range("f1"), Feuil22.Range("f1").Width
'.ColumnHeaders.Add , , Feuil22.Range("h1"), AutoSize
.ListItems.Add , , Feuil22.Cells(cel.Row, "c")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "b")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "a")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "d")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "e")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "f")
End With
Set cel = .FindNext(cel)
Loop While Not cel Is Nothing And cel.Address <> adresse
End If
End With
End Subsujet résolu, je mets mon code modifié
Private Sub recherche_Click()
Dim plage As Range, cell As Range
Dim recherche As String, adresse As String ', Col As String
Dim Ligne As Long
Dim cel As Range
'Dim C As Range
Dim Col As Byte
Col = LabelN°col.Caption
Ligne = Feuil22.Cells(Rows.Count, Col).End(xlUp).Row
recherche = CbxRecherche2.Value
Me.ListView2.ColumnHeaders.Clear
Me.ListView2.ListItems.Clear
If recherche = "" Then Exit Sub
'If triAtelier.Value = True Then
With Me.ListView2
.ColumnHeaders.Add , , Feuil22.Range("c1"), Feuil22.Range("c1").Width
.ColumnHeaders.Add , , Feuil22.Range("b1"), Feuil22.Range("b1").Width
.ColumnHeaders.Add , , Feuil22.Range("a1"), Feuil22.Range("a1").Width
.ColumnHeaders.Add , , Feuil22.Range("d1"), Feuil22.Range("d1").Width
.ColumnHeaders.Add , , Feuil22.Range("e1"), Feuil22.Range("e1").Width
.ColumnHeaders.Add , , Feuil22.Range("f1"), Feuil22.Range("f1").Width
End With
Set plage = Feuil22.Range(Cells(2, Col), Cells(Ligne, Col))
With plage
Set cel = .Find(what:=recherche, lookin:=xlValues, lookat:=xlPart)
If Not cel Is Nothing Then
adresse = cel.Address
Do
With Me.ListView2 '.ColumnHeaders.Add , , Feuil22.Range("h1"), AutoSize
.ListItems.Add , , Feuil22.Cells(cel.Row, "c")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "b")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "a")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "d")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "e")
.ListItems(.ListItems.Count).ListSubItems.Add , , Feuil22.Cells(cel.Row, "f")
End With
Set cel = .FindNext(cel)
Loop While Not cel Is Nothing And cel.Address <> adresse
End If
End With
End Subl'emplacement de création de mes en têtes de colonnes,n'était pas bon.
Cela me créait pour chaque ligne de résultat de recherche ,une série complète d'en têtes de colonnes.
le nombre d'en têtes de départ était multiplié par le nombre de ligne de résultats.
plantage pour les gros résultats!!!
désolé pour mes explications grossières...
bonne journée