Conversion de degrés/minutes/secondes en degrés décimaux

au_secours

XLDnaute Nouveau
Bonjour,

Je suis bloqué avec une fonction depuis un bon moment, merci par avance de m'aider un peu.

La fonction ci dessous (source Microsoft est fausse !! )
En fait pas complètement puisque pour convertir les coordonnées de Bordeaux
44° 50' 16" ( 44 Degré / 50 Minutes / 16 Secondes) donne la conversion en décimal = 44.83777778 (ça c'est juste :p )
MAIS
0° 34' 46" ( 0 Degré / 34 Minutes / 46 Secondes) donne 0.579444444 (C'est FAUX !) il manque le signe - pour que le calcul soit juste qui est -0.579444444 (en fait le même resultat mais avec le signe - qui doit être ajouté.

Comment je peux faire pour faire apparaitre le signe - sachant que mes cellules ne sont pas forcement avec un résultat négatif

Merci beaucoup

Voici la fonction
Code:
Function Convert_Decimal(Degree_Deg As String) As Double
   ' Declare the variables to be double precision floating-point.
   Dim degrees As Double
   Dim minutes As Double
   Dim seconds As Double
   ' Set degree to value before "°" of Argument Passed.
   degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
   ' Set minutes to the value between the "°" and the "'"
   ' of the text string for the variable Degree_Deg divided by
   ' 60. The Val function converts the text string to a number.
   minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
             "°") - 2)) / 60
    ' Set seconds to the number to the right of "'" that is
    ' converted to a value and then divided by 3600.
    seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
            2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
            / 3600
   Convert_Decimal = degrees + minutes + seconds
End Function
 

Papou-net

XLDnaute Barbatruc
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Bonsoir au_secours, et bienvenue ) toi,

Le calcul est juste : puisque tu convertis une valeur en degrés positifs, tu obtiens donc une valeur décimale positive.

Sur quel système te bases-tu pour attendre une valeur négative ?

A +

Cordialement.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Bonjour au-secours, papounet,
Sur quel système te bases-tu pour attendre une valeur négative ?
sur le méridien de Greenwich
.... est-ce à l'est ou à l'ouest ?

dans ce cas il faut ajouter le côté par rapport à ce méridien
éventuellement dans une autre cellule qui contiendra "O" ou "E"


à+
Philippe

Edit: voir fichier joint
 

Pièces jointes

  • 111.xls
    33 KB · Affichages: 943
  • 111.xls
    33 KB · Affichages: 1 016
  • 111.xls
    33 KB · Affichages: 1 051
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Bonjour.

1° pouvez-vous expliquer pourquoi c'est faux ?
2° La saisie en hh:mm:ss et un format personnalisé pour l'affichage, une division par 24 petmettent de s'exonérer de la fonction (voir pj).
A vous lire,


Edit : Bonjour Papou-net, Philippe ;)
 

Pièces jointes

  • Degrés.xls
    13.5 KB · Affichages: 1 010
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Re
Re,

J'ai édité le post 4 pour prendre en compte l'Ouest (Copié sur Philippe :p)
tu aurais pu améliorer Victor !


pour faire un peu plus sérieux, le même fichier sans colonne supplémentaire

à+
Philippe
 

Pièces jointes

  • 111.xls
    33.5 KB · Affichages: 478
  • 111.xls
    33.5 KB · Affichages: 488
  • 111.xls
    33.5 KB · Affichages: 524

au_secours

XLDnaute Nouveau
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Merci beaucoup pour vos réponses et les fichiers joints.

Mais le fichier donne des résultats faux :eek:

Essaye avec ces valeurs
44° 50' 16" ( 44 Degré / 50 Minutes / 16 Secondes) donne la conversion en décimal = 44.83777778 (ça c'est juste )
MAIS
0° 34' 46" ( 0 Degré / 34 Minutes / 46 Secondes) donne 0.579444444 (C'est FAUX !) il manque le signe - pour que le calcul soit juste qui est -0.579444444 (en fait le même resultat mais avec le signe - qui doit être ajouté.

Avec ton fichier 0° 34' 46" donne -0,068333333 (c'est faux :eek: ) le bon résultat est -0.579444444

Merci d'avance de bien vouloir encore m'aider un peu
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Re,
Merci beaucoup pour vos réponses et les fichiers joints.

Mais le fichier donne des résultats faux :eek:

Essaye avec ces valeurs


Avec ton fichier 0° 34' 46" donne -0,068333333 (c'est faux :eek: ) le bon résultat est -0.579444444

Merci d'avance de bien vouloir encore m'aider un peu
Pour info, dans le fichier qui donne des erreurs, la procédure n'est pas de moi, c'est la tienne !!!
je me suis contenté de résoudre le problème concernant les localisations à l'ouest
et pour cela j'ai utilisé le code donné au post#1 en l'adaptant uniquement pour le coté Ouest
Code:
Function Convert_Decimal(Degree_Deg As String) As Double
   ' Declare the variables to be double precision floating-point.
   Dim degrees As Double
   Dim minutes As Double
   Dim seconds As Double
   ' Set degree to value before "°" of Argument Passed.
   degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
   ' Set minutes to the value between the "°" and the "'"
   ' of the text string for the variable Degree_Deg divided by
   ' 60. The Val function converts the text string to a number.
   minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
             "°") - 2)) / 60
    ' Set seconds to the number to the right of "'" that is
    ' converted to a value and then divided by 3600.
    seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
            2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
            / 3600
   Convert_Decimal = degrees + minutes + seconds
End Function

Pour info, la question initiale était la suivante:
0° 34' 46" ( 0 Degré / 34 Minutes / 46 Secondes) donne 0.579444444 (C'est FAUX !) il manque le signe - pour que le calcul soit juste qui est -0.579444444 (en fait le même resultat mais avec le signe - qui doit être ajouté.

le fichier de Victor au post#4 donne la bonne réponse et est beaucoup plus simple d'utilisation

à+
Philippe
 
Dernière édition:

au_secours

XLDnaute Nouveau
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Bonjour,

Merci beaucoup pour votre temps.

Effectivement le fichier au post#4 fonctionne super bien. (j'avais 36 570 lignes a convertir :cool: )

Ma source était comme ça
+03357 (lat) 445121 (long) ou -03446(lat) 445016(long)
Pour isoler les - et les transformer en signe O dans une autre colonne n'as pas été facile :confused:

Un GRAND merci pour votre aide, faire mieux qu'une fonction de Microsoft c'est quand même mieux que bien.

C'était mon premier post sur ce forum, je vais rester et revenir plus souvent.
 

au_secours

XLDnaute Nouveau
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Pour l'administrateur:
Ce forum sous vBulletin est particulièrement bien fait (le template est super, c'est maison ou pas ?)
Je suis développeur Php, j'ai déjà mis en place des forums et vBulletin et Invison et aussi PhpBB.
Ici il y a aussi les MOD (Hack) qui sont bien....
Ca fait un moment que je n'ais pas fait de vBulletin, mais il y a une MOD qui donne la possibilité de finaliser un post comme "résolu" c'est surement la seule chose qui manque, sinon tout est parfait.
Merci pour ce forum convivial avec des membres de bonnes qualités
 

ROGER2327

XLDnaute Barbatruc
Re : Conversion de degrés/minutes/secondes en degrés décimaux

Bonjour à tous


(...)
Ma source était comme ça
+03357 (lat) 445121 (long) ou -03446(lat) 445016(long)
(...)
Voilà un renseignement capital ! Avec une telle source, les choses deviennent simples.
VB:
Function DegDec(DegSex)
Application.Volatile
Dim NS&, SG&
    If IsNumeric(DegSex) And DegSex <> "" Then
        SG = Sgn(DegSex)
        NS = Abs(DegSex)
        DegDec = SG * (NS \ 10000 + ((NS \ 100) Mod 100 + (NS Mod 100) / 60) / 60)
    Else
        DegDec = ""
    End If
End Function


ROGER2327
#5564


Mercredi 4 Pédale 139 (Saint Michet, Idéaliste - fête Suprême Quarte)
8 Ventôse An CCXX, 0,7757h - violette
2012-W09-1T01:51:42Z
 

Pièces jointes

  • DegrésDécimaux_179412.xlsm
    14.9 KB · Affichages: 701

Discussions similaires

Réponses
7
Affichages
2 K

Statistiques des forums

Discussions
312 609
Messages
2 090 195
Membres
104 449
dernier inscrit
Miguel937