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 Sub

sujet 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 Sub

l'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

Rechercher des sujets similaires à "listview qui rame plante"