Bonjour à tous,
je suis en train d'écrire une macro qui me permettra de trier des données contenues dans un fichier texte de trois colonnes et n lignes (N pouvant aller jusqu'à 20 millions).
Pour le moment, je travaille avec un fichier de test et je n'arrive pas au résultat escompté (mon fichier a 40000 lignes et fait 2Mo, le fichier de sorti fait 150Mo et a des millions de lignes !).

J'utilise un "shellsort" dont voici le code :

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
Public Sub ShellSort()
 
    Dim I As Long, J As Long, H As Long, V As Long, loBound As Long, upBound As Long
 
    loBound = LBound(Données(), 1)
    upBound = UBound(Données(), 1)
 
    H = loBound
    Do
        H = 3 * H + 1
    Loop Until H > upBound
 
    Do
        H = H / 3
        For I = H + 1 To upBound
            V = Données(I, 2)
            J = I
            Do While Données(J - H, 1) > V
                Données(J, 2) = Données(J - H, 1)
                J = J - H
                If J <= H Then
                    Exit Do
                End If
            Loop
            Données(J, 2) = V
            Write #1, Données(J, 1), Données(J, 2), Données(J, 3)
        Next I
    Loop Until H = loBound
End Sub
Ce que je souhaiterais c'est avoir un nouveau fichier texte avec mes trois colonnes, et les x classés de façon croissante (avec les y et z correspondants).

Merci de votre aide.

Max