Aller au contenu

vba Conversion Degrés Décimal en DMS


XGX4

Messages recommandés

Bonjour,

 

je cherche à convertir des DD en DMS mais sans resultats

en fait je viens lire un paramètre d'angle dans CATIA en DD pour l'ecrire dans une feuille xls en DMS avec le code suivant:

 

Dim Degres, Minutes, Secondes As Integer
	
Degres = Int(A(y))
Minutes = Int((A(y) - Degres) * 60)
Secondes =cstr(round((Minutes - Int(Minutes)) * 60,2))
	
xl.cells(5 + y, x + 1).Value = " " & Degres & "° " & Int (Minutes) & "' " & Secondes + Chr(34)

 

cela fonctionne bien avec des valeur positive mais pas avec des valeurs negatives...

 

si quelqu'un a une idée, je suis preneur.

 

 

XGX4

 

 

indocti discant et ament meminisse periti

(Que les ignorants apprennent, que ceux qui savent se souviennent)

Lien vers le commentaire
Partager sur d’autres sites

Résolu!

 

je ne sais pas si c'est le top du codage mais cela fonctionne.

 
Dim Degres, Minutes, Secondes As Integer	
Degres = (A(y))

if Degres < 0 then

Degres = Degres1
Degres1 = Int(Abs(A(y)))
Minutes1 = Int((Abs(A(y)) - Degres1) * 60)
Minutes = ((Abs(A(y)) - Degres1) * 60)
Secondes = cstr(round((Minutes - Int(Minutes)) * 60,2))

DMS= " -" & Degres1 & "° " & Minutes1 & "' " & Secondes+ Chr(34)
xl.cells(5 + y, x + 1).Value = DMS
	
else
Degres = Int(A(y))
Minutes1 = Int((A(y) - Degres) * 60)
Minutes = ((A(y) - Degres) * 60)
Secondes =cstr(round((Minutes - Int(Minutes)) * 60,2))

DMS = "  " & Degres &"° " & Minutes1 & "' " & Secondes + Chr(34)
xl.cells(5 + y, x + 1).Value = DMS

XGX4

 

 

indocti discant et ament meminisse periti

(Que les ignorants apprennent, que ceux qui savent se souviennent)

Lien vers le commentaire
Partager sur d’autres sites

essaie ceci. C'est peu mieux que ton truc, mais il y a surement plus simple.

J'ai pas testé ...

 

Dim Degres, Minutes, Secondes As Integer	
Dim pos as boolean    ' positif

pos = true

Degres = (A(y))

if Degres < 0 then ' inversion du signe
Degres = - Degres
pos = false      ' pour plus tard (c'est un drapeau)
endif	

Degres = Int(Abs(A(y)))

Minutes1 = Int((Abs(A(y)) - Degres1) * 60)

Minutes = ((Abs(A(y)) - Degres1) * 60)

Secondes = cstr(round((Minutes - Int(Minutes)) * 60,2))

DMS= Degres1 & "° " & Minutes1 & "' " & Secondes+ Chr(34)

if pos = false then DMS = " -" & DMS    ' c'était nég donc je rajoute le signe

xl.cells(5 + y, x + 1).Value = DMS

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité