Temps de réaction infiniment long

lynyrd

XLDnaute Impliqué
Bonjour le forum
Dans le fichier ci-joint (réduit pour la circonstance),lors d'une recherche par "Villes"si les 38000 lignes sont
renseignées,Excel plante et ne répond plus.
Y a t'il un moyen d'optimiser le code pour résoudre ce problème ?
Merci.
 

Pièces jointes

  • cp.zip
    37.2 KB · Affichages: 32
  • cp.zip
    37.2 KB · Affichages: 36
  • cp.zip
    37.2 KB · Affichages: 35
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Temps de réaction infiniment long

bonjour,

la durée est importante parce que dans Private Sub obG2() les données sont triées dans l'ordre alphabétique selon un code peu performant, avant de les insérer dans la combobox.
il existe d'autres codes de tri plus performant par exemple sur ce lien Formation Excel VBA JB en faisant le choix Les tableaux (Array)

Une autre solution consiste à trier la feuille excel avant d'insérer les données; le temps pour cette opération est de l'ordre de la seconde.( test réalisé sur un tableau de 38000 lignes)

la Sub obG2() modifiée
Code:
Private Sub obG2()
Dim col As Variant
Dim dico As Object
Dim tbl As Variant
Dim I As Variant
Dim j As Variant
Dim temp As Variant
Dim  Plage As Range, DerLig As Long

UserForm1.ComboBox1.Clear
col = IIf(UserForm1.OptionButton3.Value = True, 1, 2)
With Sheets("Feuil1")
    '** on définie la plage totale des données
    '** et on les trie selon la colonne col ville ou département
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    Set Plage = .Range("A1:H" & DerLig)
    Plage.Sort Key1:=Cells(1, col), Order1:=xlAscending, Header:=xlGuess
    '**************
    Set pl = .Range(.Cells(2, col), .Cells(DerLig, col))
End With

Set dico = CreateObject("scripting.dictionary")
For Each cel In pl
    dico(cel.Value) = ""
Next cel

UserForm1.ComboBox1.List = dico.keys
End Sub

Set Plage = .Range("A1:H" & DerLig) et Plage.Sort Key1:=Cells(1, col), Order1:=xlAscending, Header:=xlGuess a adapter à la plage réelle des donnés et en fonction de la présence de lignes de titre ou non

A+
 

Discussions similaires

Réponses
7
Affichages
405

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji