Bonjour,

je suis navré mais je n'ai pas trouvé la solution à ma question sur le forum.

J'ai une table dans access, dans laquelle chaque enregistrement contient une coordonnée GPS (lat, long). La table est remise à 0 au départ et contient à l'arrivée un certain nombre de points. Ex: 30 points.
Afin de calculer la distance entre le départ et l'arrivée, je dois calculer la distance entre chaque point et additionner ces distances pour obtenir la globale.

je souhaite calculer la distance entre chaque point et stocker cette distance dans une variable que j'incrémente chaque fois, pour avoir à la fin la distance totale entre le départ et l'arrivée.

Comment est-ce que je fais une boucle qui calcule:
#record 1 à #record 2
#record 2 à #record 3
etc. jusqu'à la fin ?

le code que j'utilise pour calculer la distance entre 2 points est:
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
 lat1 = x1
 lng1 = y1
 lat2 = x2
 lng2 = y2
 
        rlo1 = dtR(lng1)
        rla1 = dtR(lat1)
        rlo2 = dtR(lng2)
        rla2 = dtR(lat2)
        dlo = (rlo2 - rlo1) / 2
        dla = (rla2 - rla1) / 2
        A = (Sin(dla) * Sin(dla)) + Cos(rla1) * Cos(rla2) * (Sin(dlo) * Sin(dlo))
        d = 2 * arctan2(Sqr(A), Sqr(1 - A))
 
        retour = (EarthRadius * d)
        'sortie = Format(retour, "#####.##" & " m")
        sortie = Round(retour, 1) & " m"
donc je souhaite que la boucle charge la variable x1, y1, x2, y2 en passant d'un enregistrement à un autre.

Quelqu'un pourrait-il m'aider ?
d'avance merci.

Solution
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
      Set Rs = CurrentDb.OpenRecordset("T_NMEA", dbOpenTable, dbReadOnly)
        Set Rs2 = CurrentDb.OpenRecordset("T_NMEA", dbOpenTable, dbReadOnly)
            Rs2.MoveNext
            Do
            'Rs.MoveFirst
            'While Not Rs.EOF
                With Rs
                    x1 = !x
                    y1 = !y
                    id1 = !IDNMEA
                    MsgBox id1 & "  - id1"
                 End With
 
                                     'Do
 
                                        With Rs2
                                            x2 = !x
                                            y2 = !y
                                            id2 = !IDNMEA
                                            MsgBox id2 & "  - id2"
                                        End With
                                    'Loop
                                    Rs.MoveNext
                                 Rs2.MoveNext
              Loop Until Rs.EOF
        Rs.Close