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
| Option Compare Database
Function Calcul_Distance(x_cible As Double, y_cible As Double, x_ref As Double, y_ref As Double) As Double
Calcul_Distance = 6371 * ArcCosinus(Math.Cos(Radians(y_cible)) * Math.Cos(Radians(y_ref)) * Math.Cos(Radians(x_ref) - Radians(x_cible)) + Math.Sin(Radians(y_cible)) * Math.Sin(Radians(y_ref)))
End Function
'---------------------------------------
Function PI() As Double
PI = Atn(1) * 4
End Function
'-------------------------------------------
Public Function ArcCosinus(Valeur As Double) As Double
If Valeur = 1 Then
ArcCosinus = 0
Else
ArcCosinus = Atn(-Valeur / Sqr(-Valeur * Valeur + 1)) + _
2 * Atn(1)
End If
End Function
'----------------------
Function Radians(degres As Double) As Double
'Conversion de degrés en radians
Radians = degres / 180 * PI()
End Function
'------------------------------
Sub test_calcul()
Dim x1 As Double
Dim y1 As Double
Dim x2 As Double
Dim y2 As Double
Dim Resultat As Double
'Nanterre (92)
x1 = 48.8886993055556
y1 = 2.21100338888889
'Monterault Fault sur Yonne (77)
x2 = 48.3804315
y2 = 2.94655349999994
'
Resultat = Calcul_Distance(x1, y1, x2, y2)
MsgBox "Distance Nanterre (92) -> Monterault Fault sur Yonne (77) = " & Round(Resultat, 2) & "km"
'Champigny sur Marne (94)
x1 = 48.8126479
y1 = 2.52886820000003
'Rosny sur Seine (78
x2 = 49.000443
y2 = 1.650059
Resultat = Calcul_Distance(x1, y1, x2, y2)
MsgBox "Champigny sur Marne (94) -> Rosny sur Seine (78) = " & Round(Resultat, 2) & "km"
End Sub |
Partager