XGX4 Posté(e) le 27 avril 2011 Posté(e) le 27 avril 2011 Bonjour, je cherche à convertir des DD en DMS mais sans resultatsen 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)
marc54 Posté(e) le 29 avril 2011 Posté(e) le 29 avril 2011 tu peux tester si ton A est négatif. Si c'est le cas, tu le repasses en positif et tu poses une variable, que tu testeras en fin de programme pour rebasculer le signe.Je ne sais pas si je suis clair ... Marc http://www.3dsys.fr
XGX4 Posté(e) le 29 avril 2011 Auteur Posté(e) le 29 avril 2011 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)
marc54 Posté(e) le 29 avril 2011 Posté(e) le 29 avril 2011 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 Marc http://www.3dsys.fr
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant