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 :
Un énorme merci à tous ceux qui voudront bien m'apporter de l'aide
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![]()
Bonne journée
PS : Je ne programme que depuis 1 an, je me considère donc comme débutant !
Partager