Bonjour à tous,

Après plusieurs jours à décortiquer internet, les guides et les aides, je ne trouve pas solution à mon problème et décide donc de faire appel à vos connaissances.

Je suis surtout orienté HTML/PHP/SQL/C++ et pour les besoins de ma boite, je me suis mis au VBA en urgence. Au final un code informatique n'est qu'un cousin d'un autre.

Mon problème est le suivant :

J'ai un fichier texte contenant, pour l'instant, 3 millions de lignes. Il est amené à en contenir 12 à 15 millions prochainement.
Je dois en extraire les données par colonne, trouvé les valeurs min/max/moy/etc... Mais pour cela il me semble que j'ai besoin d'un Range(), et voila le soucis, je n'arrive pas à définir un Range d'un tableau virtuel, qui n'est pas dans une feuille.

Voici le code et le soucis qui va avec.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Sub Extraction(Fichier As String, _
     NbLignes As Long, _
     Separateur As Variant)
 
    Dim debut As Date
    Dim temps As Date
    Dim fin As Date
    Dim Counter As Double
    Dim tableau() As String
    Dim i As Double
    Dim ContenuLigne As String
    Dim Val_1 As String
    Dim Val_2 As String
    Dim Val_3 As String
    Dim Val_4 As String
    Dim Val_5 As String
    Dim Val_6 As String
    Dim tab_final() As Variant
    Dim range_1 As Range
 
 
 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.DisplayStatusBar = False
    ActiveSheet.DisplayPageBreaks = False
 
    Counter = 0
    debut = Time
    i = TextBox_Nb_Lignes.Value
    ReDim tab_final(i, 6)
 
    Open Fichier For Input As #1
 
           Do While Not EOF(1)
                   Counter = Counter + 1
 
               Line Input #1, ContenuLigne
 
               tableau = Split(ContenuLigne, Separateur)
               Val_1 = Mid(tableau(0), 1, 5)
               Val_2 = Mid(tableau(3), 1, 5)
               Val_3 = Mid(tableau(6), 1, 5)
               Val_4 = Mid(tableau(9), 1, 5)
               Val_5 = Mid(tableau(12), 1, 5)
               Val_6 = Mid(tableau(15), 1, 5)
               tab_final(Counter, 1) = Val_1
               tab_final(Counter, 2) = Val_2
               tab_final(Counter, 3) = Val_3
               tab_final(Counter, 4) = Val_4
               tab_final(Counter, 5) = Val_5
               tab_final(Counter, 6) = Val_6
 
           Loop
 
 
    Close #1
                range_1 = Range(tab_final(3, 1), tab_final(i, 1))
                range_1 = Application.Min(range_1)
                Min_1.Value = range_1
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayStatusBar = True
    ActiveSheet.DisplayPageBreaks = True
    fin = Time
    temps = fin - debut
 
 
 
    MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
End Sub
Je n'ai mis que l'essentiel et ai détaillé chaque action, je sais que l'on peut simplifié mais le soucis n'est pas la. Pour l'instant je ne veux que la valeur Min de la première colonne.
J'ai comme erreur à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
range_1 = Range(tab_final(3, 1), tab_final(i, 1))
"Erreur 1004 : La méthode Range de l'objet _Global à échoué".

Je suis dans l'impasse, merci d'avance pour votre aide.