Bonjour,

Dans le cadre d'un projet perso, je voudrais créer une listBox avec les valeurs de la colonne A de ma feuille. Cette feuille contient plus de 250 000 lignes.

Mon code permet de lire tous les champs, de supprimer les doublons et aussi de les mettre en ordre Alphanumérique !

Mais comme vous pouvez imaginer, le code prend énormément de temps... je recherche donc un peu d'aide pour gagner en rapidité

J'ai essayé les codes suivant sans vraiment de changement...

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Mon code est le suivant :

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
Sub UserForm_Initialize()
 
Dim DernLigne As Long
Dim I As Integer
Dim temp
Dim Ok As Boolean
 
'Comptage du nombre de lignes
DernLigne = Range("A1048576").End(xlUp).Row
 
'Remplissage de la listbox
ListBox1.Clear
ListBox1.ColumnCount = 2
Set f = Sheets("FEC 2018")
Set mondico = CreateObject("Scripting.Dictionary")
   For c = 2 To DernLigne
    Cells(c, 1).Value = UCase(Left(Cells(c, 1).Value, 1)) & Right(Cells(c, 1).Value, Len(Cells(c, 1).Value) - 1)
    If Not mondico.Exists(Cells(c, 1).Value) Then mondico.Add Cells(c, 1).Value, Cells(c, 1).Value
   Next c
    Me.ListBox1.List = mondico.items
    ListBox1.AddItem
 
'Tri par Ordre Alphanumérique
  With Me.ListBox1
      Do
      Ok = True
      For I = 0 To .ListCount - 2
        If .List(I) > .List(I + 1) Then
          temp = .List(I)
          .List(I) = .List(I + 1)
          .List(I + 1) = temp
          Ok = False
        End If
      Next I
    Loop Until Ok = True
  End With
 
'Remplissage de la combobox
ComboBox1.AddItem "Achats"
ComboBox1.AddItem "Banque"
ComboBox1.AddItem "Opérations Diverses"
ComboBox1.AddItem "Ventes"
 
End Sub
Un énorme merci à tous ceux qui voudront bien m'apporter de l'aide

Bonne journée

PS : Je ne programme que depuis 1 an, je me considère donc comme débutant !