VB6 Degré Minute Seconde en Degré Décimaux

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 2 déc. 2005 à 18:59
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 3 déc. 2005 à 07:33
Salut...

Je suis à la recherche du code pour pouvoir modifier un nombre en Degré minute seconde en Degré Décimaux.

Je suis capable de faire ce changement si j'utilise des textbox
C'est-à-dire un textbox pour les Degrés
un texbox pour les Minutes
une texbox pour les Secondes.

De cette facon j'y arrive...

Mon problème, je veux que si j'inscrit dans un seul et unique textbox un Angle en Degré Minute Seconde (par exmeple 60.2550)
d'être capable de faire la calcul. Donc le code devrait savoir que les 2 premiers chiffre après la virgule sont les minutes et donc de diviser par 60 et que les quatre dernier chiffres sont les secconde et donc de diviser par 3600...

J'ai essayé plein de truc et je n'y arrive pas... si quelqu'un peut m'aider un peu...

Merci d'avance
A voir également:

7 réponses

cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
2 déc. 2005 à 19:13
Essaye cette routine:
On entre avec x en radians et on en sort avec a$ formaté
Sub Rad2Geo(x, a$)
x = x * 180 / pi
deg = Int(x)
mmin = x - deg
mmin = mmin * 60
sec = mmin - Int(mmin)
mmin = Int(mmin)
sec = sec * 60
sec1 = Int(sec)
sec2 = Int(10000 * (sec - sec1))
aa$ = Trim$(Str$(sec2)) If Len(aa$) 3 Then aa$ "0" + aa$ If Len(aa$) 2 Then aa$ "00" + aa$ If Len(aa$) 1 Then aa$ "000" + aa$
a$ = Str$(deg) + "°" + Str$(mmin) + Chr$(39) + Str$(sec1) + Chr$(34) + aa$
End Sub
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 déc. 2005 à 19:27
Dim s As String


Dim Lg As Integer





s = Text1.Text





Lg = Len(s)


MsgBox Left$(s, Lg - 5) + Mid$(s, Lg - 3, 2) / 60 + Right$(s, 2) / 3600


Daniel
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
2 déc. 2005 à 20:16
Bonsoir,

Essaye ce code (il fonctionne).



Private Sub Command1_Click()

Dim int1 As Integer, int2 As Integer

Text1.Text = "60.2550"

If Text1.Text = "60.2550" Then

int1 = Left(Text1.Text, 2)

int2 = Right(Text1.Text, 4)

Text1.Text = Round((int1 / 60), 2)

End If

Text1.Text = Round((int2 / 3600), 4) + Text1.Text

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 déc. 2005 à 20:26
bon je corrige:



"et que les quatre derniers chiffre sont les secconde et donc de diviser par 3600..."



"et que les deux derniers chiffres sont les secondes et donc doivent être divisés par 3600..."


Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 déc. 2005 à 00:02
Bonsoir,

OK Gobillot, mais dans ce cas, les secondes ne doivent pas être divisée
mais ajoutée.Si non, qu'il nous dise quel résultat il veut obtenir ??



jpleroisse
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 déc. 2005 à 00:11
en degrés décimaux comme il a dit



dd.mmss représente dd + mm/60 + ss/3600





par exemple 60.2550



degré As Double 60 + 25/60 + 50/3600 60.43055555

Daniel
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 déc. 2005 à 07:33
Re,

OK, devrais me coucher plus-tôt.



jpleroisse
0
Rejoignez-nous