Calcul la distance orthhodomique entre 2 points avec exel macro vb
ben1967
Messages postés1Date d'inscriptionlundi 14 septembre 2009StatutMembreDernière intervention23 octobre 2009
-
23 oct. 2009 à 14:58
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
23 oct. 2009 à 23:47
voici le programme deja developpé:
Option Explicit
Function DerniereCellule() As Long
'cette fonction donne la ligne du dernier élément (cela permet de connaitre le nbr d'éléments à traiter)
Dim i As Long, j As Long
i 5: j 4
DerniereCellule = 0
Do
If Cells(i, j) <> "" Then
i = i + 1
Else
DerniereCellule = i - 1
End If
Loop Until DerniereCellule <> 0
End Function
Sub centrer()
'permet de centré les élements dans les cellules
Function conversion0(ByVal a As String) As Double
'permet d'effectuer le calcul intermediaire
Dim res As Double
res = (a - Int(a)) * 60
conversion0 = res
End Function
Function conversion1(ByVal a As String) As String
'cette fonction permet de convertir les longitudes et les latitudes
Dim b As Double, c As Double, d As Double
b = conversion0(a)
c = conversion0(b)
d = conversion0(c)
Function conversion2(ByVal a As Long) As String
'cette fonction permet de convertir les horaires
Dim h As Long ' h = heures
Dim m As Long ' m = minutes
Dim S As Long ' s = secondes
h = Int(a / 10000) + 2
m = Int(a / 100) - (h - 2) * 100
S = a - (h - 2) * 10000 - m * 100
conversion2 = h & "h" & m & "min" & S & "s"
End Function
Function conversion3(ByVal b As Long) As String
'cette fonction permet de convertir les dates
Dim j As Long ' j = jour
Dim m As Long ' m = mois
Dim a As Long ' a = année
a = Int(b / 10000)
m = Int(b / 100) - a * 100
j = b - a * 10000 - m * 100
conversion3 = j & "/" & m & "/" & a
End Function
Function ReplacePointParVirgule(ByVal S As String)
Dim i As Integer
ReplacePointParVirgule = S
For i = 1 To Len(S)
If Mid(ReplacePointParVirgule, i, 1) = "." Then
Mid(ReplacePointParVirgule, i, 1) = ","
End If
Next i
End Function
Sub conversion()
Dim i As Long, la As Variant, lo As Variant
Dim horaire As Variant, dates As Variant, latitude As Variant, longitude As Variant
Dim a As Long 'a représente le nbr d'éléments à traiter
a = DerniereCellule() - 4
Dim res1 As Variant, res2 As Variant
res1 "": res2 ""
If Cells(5, 4).Value = "" Then
MsgBox "Copier les valeurs dans la case D5" & vbNewLine & "c'est à dire à la 5e ligne et 4e colonne "
Else
conversionbis1
End If
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 oct. 2009 à 19:53
Tu as posté une source pour exposer ton code.
C'est le forum qui répondra à tes questions.
Dans la saisie, ici, utilise le menu ^^ pour délimiter le code afin de le coloriser.
Explique ce que tu fais jusqu'à présent et la difficulté que tu rencontres.
Pour les exemples de fichier texte, 3 ou 4 lignes suffisent, pas la peine de copier tout le fichier.
Plus c'est long, moins le mebre prendra le temps de lire, alors :
- dans ton code, ne colle que ce qui a un rapport avec le problème
- résume, choisis bien tes mots.
Dans ton cas, tu nous montres comment tu es passé du fichier texte à la feuille Excel.
Ok, mais si les données sont sur une feuille, on ne va pas retraivailler avec le fichier texte, donc ton code n'apporte rien.
Alors ta vraie question est :
Dans une feuille Excel, j'ai les valeurs de longitude et latitude de deux points A et B
J'ai aussi l'heure de passage à chaque point A et B
Comment faire pour calculer la vitesse entre ces deux points.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)