Bonjour,

Je suis actuellement en train de travailler sur des listes de données sous access, dans un premier temps, pour exercer mon VBA, j'ai fait des test d'algos sur excel, etant donné que je dois traiter un nombre conséquent de données, je me retrouve maintenant obligé de passer sous access mais je ne comprend pas bien comment adapter mon code.

Mon code consiste en une double boucle qui compare des dates pour savoir si des données sont obsoletes ou non, vu mes bases, je me retrouve avec 1100*9millions de tours de boucles. J'avais donc stocké toutes mes données dans une variable tableau sous excel pour accelerer l'execution, malheuresement, excel ne permet pas de traiter des tableau de 9 millions de ligne.
Mon problème est que je ne sais pas comment accèder simplement aux données sur access de façon a les mettre dans mes variables "tableaux".

Voici mon 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
30
31
32
33
34
35
36
37
38
39
40
41
42
 
Sub optim()
    Dim mesx As Double
    Dim mesy As Double
    Dim theox As Double
    Dim theoy As Double
    Dim dist As Double
    Dim bol As Boolean
 
'Déclaration tableaux
    Dim tabs()
    Dim tabm()
 
'Enregistrement des valeurs dans les tableaux
    lasts = Sheets("Feuil1").Range("A1").End(xlDown).Row
    tabs = Sheets("Feuil1").Range("A2:H" & lasts).Value
 
    lastm = Sheets("Feuil2").Range("A1").End(xlDown).Row
    tabm = Sheets("Feuil2").Range("A2:E" & lastm).Value
 
    For i = 1 To lasts - 1
 
        theox = tabs(i, 5)
        theoy = tabs(i, 6)
 
        For j = 1 To lastm - 1
 
            mesx = tabm(j, 4)
            mesy = tabm(j, 5)
            dist = Sqr((mesx - theox) ^ 2 + (mesy - theoy) ^ 2)
            If dist < 100 Then
 
                If tabs(i, 8) < tabm(j, 2) Then
                Sheets("Feuil1").Range("J" & i).Value = "OK"
                Else
                Sheets("Feuil1").Range("J" & i).Value = "OBSOLETE !!"
                Sheets("Feuil1").Range("J" & i).Interior.Color = RGB(255, 0, 0)
                End If
            End If
        Next
    Next
End Sub

Merci