Convertion DMS en DD

Bonjour a tous,

J'ai applique cette fonction a une cellule excel afin de convertir des DMS en DD, cependant après conversion, dans chaque cellule j'ai la valeur "name".

Dans la cellule convertit, j'ai applique un format de lecture standard.

Function Convert_Decimal(Degree_Deg As String) As Double
    ' Declare the variables to be double precision floating-point
   Dim degrees#, minutes#, seconds#       ' # = as Double
   ' Set degree to value before "°" of Argument Passed.
   Degree_Deg = Replace(Degree_Deg, "~", "°")
   degrees = CDbl(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 = CDbl(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 1, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, "°") - 1)) / 60
   ' Set seconds to the number to the right of "'" that is
   ' converted to a value and then divided by 3600.
   seconds = CDbl(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
           1, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 1)) / 3600
   Convert_Decimal = degrees + minutes + seconds
End Function

Afin de lire la bonne valeur, que dois-je appliquer en format de lecture?

Ou alors, il y a t'il une autre méthode qui a partir des coordonnées DMS me calcule automatiquement en DDM et en dd via Excel sans passer par les macros ? quel format DMS faut il pour faire ce calcul ?

A+

52testdate.xlsm (66.07 Ko)

Bonjour

Ci joint ma solution

209testdate.xlsm (59.01 Ko)

A+ François

Pourquoi ne pas passer par la formule toute simple : DD = D + M/60 + S/3600 ?

132gps.xlsx (9.05 Ko)

Edit : oups, percussion, désolé.

Bonjour Optimix,

Merci de ta proposition et ton soutien.

Je souhaite conserver le format de mon tableau sans rajouter 3 connes pour decrire les degres, minutes, secondes.

A+

Bonjour Fanfan38,

Merci pour ta solution, elle s'adapte bien.

La question que je me pose, dois je en DMS rentrer les N/S et les E/W ou les rentrer sans ?

Que me conseille-tu ?

A+

Au cas où vous ne l'auriez pas vu, j'ai mis les 2 possibilités dans mon exemple : avec 1 ou 3 colonnes. Mais le principe est toujours le même.
Bonne journée.

Re,

A la 5eme ligne, en integrant les coordonnées, j'ai de nouveau la valeur name?

Je comprends pas pourquoi car je n'ai pas changer la formule ?

image

A+

Re Optimix

,

Oui, en effet, je te remercie !

Quand j'ai applique ces positions, j'ai une erreur sur la longitude:

74°25'06"19°05'37"74.41833333458°14'48.00''

A+

Un "0" était passé à la trappe. Vérifiez bien la cellule GAUCHE(...;2) :

Avec vos valeurs on obtient bien 48,6361111 et 19,0936111

=GAUCHE(A20;2) + STXT(A20;4;2)/60 + STXT(A20;7;2)/3600
56gps.xlsx (9.10 Ko)

Ok c'est bon Optimix, j'ai utilise ta fonction Excel qui se génère automatiquement quand je crée une ligne ou fait une modification de ligne, il calcule automatiquement en DD.

As-tu la meme en DDM ? pour Calculer depuis une cellule en DMS.

Aussi, quand je crée une ligne et je clique dessus, (il n'y a rien dans les colonnes en DD) il me met ce message d'erreur car il ne trouve aucune valeur, normal j'ai rien rentre.

image

il y a t'il une fonction que quand aucune valeur n'est rentrée, je puisse continuer a naviguer sur mon formulaire ?

a+

Je n'y connais rien en navigation. Que signifie DDM ? Quel en est le format ?

DDM: Degrés & Decimal degrés = Degrés minutes décimales (48°39.9270'N 4°19.4742'W)

Dans ta formule,

Comment puis je gérer le N/S et E/W ? afin de ne pas se tromper d'orientation.

Il faudrait une formule qui puisse prendre en compte le N/S/E/W

La formule ne marche pas si j'ai cette position en DMS: 76°09'00"N 152°28'54"E

Je devrais avoir en DD: 76.150044°N 152.481846°E

Il faudrait une formule qui prenne en compte le format

- latitude 00°00'00"N/S (EX;=LEFT(Q4,2) + MID(Q4,4,2)/60 + MID(Q4,7,2)/3600)

- longitude 000°00'00"E/W (EX:=LEFT(R4,3) + MID(R4,5,2)/60 + MID(R4,8,2)/3600).

Quelqu'un peut il m'aider ? Est ce bon ?

A+

Puis je avoir une fonction VBA ou dans mes cellules ?

en latitude j'ai ce format 00°00'00"NouS

en longitude ce format 000°00'00"EouW

pour avoir en conversion automatique le format DD

en latitude j'ai ce format 00.000000°NouS

en longitude ce format 000.000000°EouW

a+

Dans l'exemple ci-dessous, vous avez le choix entre une formule et une fonction personnalisée, donc du VBA.

33gps.xlsm (14.85 Ko)

Re,

Ci joint ma solution

26testdate.xlsm (60.57 Ko)

A+ François

Bonjour François,

J'essaie d'adapter ta solution sur mon fichier mais je n'ai pas le meme rendu que toi.

J'ai bien mis un module et redéfinit la formule et les bons formats mais dans les colonnes DD j'ai cette valeur #NAME?, que je ne comprends pas.

image

Peux tu m'expliquer comment tu as fait pour pouvoir afficher la conversion numerique ?

A+

7testdate.xlsm (70.88 Ko)

Ps: je te renvoie mon fichier pour voir ou est mon erreur, merci encore !

Bonjour

Ne me demande pas pourquoi...

J'ai dû changer le nom de la fonction pour que ça marche...

28testdate-1.xlsm (60.08 Ko)

A+ François

Re,

Oui j'ai modifie aussi, ca marche ! mais cela est un peu bizarre ...

As tu une formule VBA pour la conversion en DDM ou degrés, minutes décimales.

ex: 25°02'58"N 77°27'59"W -> 25°2.9831'N 77°27.9966'W

Ou alors du DD vers du DDM

25.048611°N 77.466389°W ->

A+

Comme je ne sais pas à qui tu t'adresses, une fonction VBA. 148°38'10" W donne 148°38.16666' W

Function DMS_DDM(ByVal ref As String) As String
    Dim table() As String
    Dim minutes As Double
    Dim sens As String

    sens = Right(ref, 1)
    table = Split(ref, "°")
    DMS_DDM = table(0) & "°"
    table = Split(table(1), "'")
    minutes = CDbl(Left(table(0), 2))
    minutes = minutes + CDbl(Left(table(1), 2)) / 60
    DMS_DDM = DMS_DDM & Left(Str(minutes), 8) & "' " & sens
End Function
Rechercher des sujets similaires à "convertion dms"