Problème de calcul de distance entre deux coordonnées géographiq
zazou36000
Messages postés2Date d'inscriptionvendredi 26 juin 2015StatutMembreDernière intervention29 juin 2015
-
26 juin 2015 à 12:59
zazou36000
Messages postés2Date d'inscriptionvendredi 26 juin 2015StatutMembreDernière intervention29 juin 2015
-
29 juin 2015 à 10:29
Bonjour
J'ai essayé d'utiliser le code de cs_Jack :
[vba excel] calculer la distance entre deux coordonnées géographiques.
Mon but étant de calculer la distance qui sépare un point donné sur la carte, d'une ville de l'Indre (distance en vol d'oiseau).
Exemple :
Le souci est que mon résultat (Distance) est NÉGATIF. Le bon résultat serait 89 Km entre Civaux et Aigurande.
Je ne trouve pas le hic.
Si j'arrive à comprendre et donc rectifier ce résultat. L'étape suivante est de boucler le calcul pour chaque point d'arrivée.
Private Sub CalculeDistance()
' Calcule la distance entre deux coordonnées géographiques
' Les coordonnées Latitude et Longitude doivent être exprimées en degrés décimaux
' (et pas en degrés, minutes, secondes)
Dim gRayonMoyen As Single
Dim gLatitude1 As Single
Dim gLongitude1 As Single
Dim gLatitude2 As Single
Dim gLongitude2 As Single
Dim gDistance As Single
If Not (IsEmpty(Range("LAT_ORIGINE")) Or _
IsEmpty(Range("LNG_ORIGINE")) Or _
IsEmpty(Range("LAT")) Or _
IsEmpty(Range("LNG"))) Then
If Range("LAT_ORIGINE").Value = Range("LAT").Value And _
Range("LNG_ORIGINE").Value = Range("LNG").Value Then
Range("Distance").Value = 0
Else
gRayonMoyen = 6371 ' de la terre, en km
gPi = 4 * Atn(1)
' Convertit les degrés en radians
gLatitude1 = Range("LAT_ORIGINE").Value / 180 * gPi
gLongitude1 = Range("LNG_ORIGINE").Value / 180 * gPi
gLatitude2 = Range("LAT").Value / 180 * gPi
gLongitude2 = Range("LNG").Value / 180 * gPi
' Calcul
gDistance = ACos((Sin(gLatitude1) * Sin(gLatitude2)) _
+ (Cos(gLatitude1) * Cos(gLatitude2) * Cos(gLongitude1 - gLongitude2))) _
* gRayonMoyen
' Affichage
Range("Distance").Value = gDistance
End If
End If
End Sub
Private Function ACos(AngleRandian As Single) As Single
' ArcCosinus
ACos = Atn((AngleRandian * (-1)) _
/ Sqr(((AngleRandian * (-1)) * AngleRandian) + 1)) _
+ (gPi / 2)
End Function
Toute ma gratitude à celui ou celle qui consacrera un peu de temps pour m'aider.
Un grand MERCI
PS: mon niveau en programmation est bas.
A voir également:
Calcul distance entre 2 codes postaux excel
Formule distance entre deux points - Meilleures réponses
Comment calculer la distance entre deux points - Meilleures réponses
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 26 juin 2015 à 23:27
Bonjour,
1) moi, c'est 98 km et non 89 km, que je calcule
2) il est probable que tu t'es emmêlé les pinceaux entre les coordonnées
3) tu dis être d'un "niveau très bas en programmation".
Pourquoi alors utiliser VBA ? Une formule Excel suffit ===>>> regarde ===>>>
Et si tu tiens à utiliser VBA1 ===>>> utilise donc, depuis VBA, la propriété Formula !
zazou36000
Messages postés2Date d'inscriptionvendredi 26 juin 2015StatutMembreDernière intervention29 juin 2015 29 juin 2015 à 10:29
Merci de ton aide ucfoutu,
Je vais pour l'instant utiliser la formule.
Mais je cherche tout de même à trouver mon erreur sur le code.
Encore merci de t'être penché sur ma question.
Et merci pour ta solution
Bonne journée à toi.