IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

conversion DD en DMS


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut conversion DD en DMS
    Bonsoir la communauté,

    j'ai une nouvelle fois besoin de précieuse aide.

    j'essaye de convertir des cordonnées GPS de degrés décimaux en degrés minutes seconde.

    J'ai trouvé plein de formule sur internet pas une seule qui réponde à mes attentes.

    actuellement j'arrive a transformer mes DD en DMS mais il me manque l'information cardinale et surtout si la coordonné commence par 0 celui est supprimé.

    Voici le code que j'ai réussi a trouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub DD()
    Dim Rng As Range
    Dim WorkRng As Range
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    For Each Rng In WorkRng
        num1 = Rng.Value
        num2 = (num1 - Int(num1)) * 60
        num3 = Format((num2 - Int(num2)) * 60, "00")
        Rng.Value = Int(num1) & "ø" & Int(num2) & "'" & Int(num3) & "''" & ".000"
    Next
    End Sub
    avec ce code je suis obligé de selectionner ma plage de cellule. Or je voudrais que cela ce fasse automatiquement sur les colonne C et D et avoir le resultat en N xx°xx'xx".xxx et W xxx°xx'xx".xxx.

    en vous remerciant par avance pour votre aide
    bonne soirée

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 193
    Par défaut
    Hello,
    tu peux t'en sortir avec des formules du genre (ici version française) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B3<0;"S ";"N ")&TEXTE(ABS(B3/24);"[hh]°mm'ss,000")
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(C3<0;"O ";"E ")&TEXTE(ABS(C3/24);"[hh]°mm'ss,000")
    avec une conversion en , du . si nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUBSTITUE(B2;".";",")*1
    Nom : DD_DMS.PNG
Affichages : 296
Taille : 15,8 Ko

    Ami calmant, J.P

  3. #3
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut
    Bonsoir,

    Merci pour ta réponse.
    J'aurai préférer un code vba si possible.

    Bonne soirée

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 193
    Par défaut
    Hello,
    Citation Envoyé par nawak83 Voir le message
    B
    J'aurai préférer un code vba si possible.
    tu peux essayer un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function convToDMS(dd, isLng)
    Dim Direction, absDd, deg, frac, min, sec
    dd = CDbl(Replace(dd, ".", ","))
    If dd < 0 Then
        If isLng Then Direction = "W" Else Direction = "S"
    Else
        If isLng Then Direction = "E" Else Direction = "N"
    End If
    absDd = Abs(CDbl(dd))
    deg = Int(absDd)
    frac = absDd - deg
    min = Abs(Int(frac * 60))
    sec = frac * 3600 - min * 60
    sec = Abs(Int(sec * 1000) / 1000)
    convToDMS = CStr(deg) + "°" + CStr(min) + "'" + _
                Replace(Format(sec, "00''.000"), ",", ".") + " " + Direction
    End Function
     
    Sub Conversion()
    Dim Rng As Range
    Dim Ws As Worksheet
    Dim WorkRng As Range
    Dim num1, num2, num3
    Set Ws = Worksheets("Country")
    For Each Rng In Ws.Range("Coords").Rows
        Rng.Cells(1, 3).Value = convToDMS(Rng.Cells(1, 1).Value, False)
        Rng.Cells(1, 4).Value = convToDMS(Rng.Cells(1, 2).Value, True)
    Next Rng
    End Sub
    Nom : ConvToDMS.PNG
Affichages : 244
Taille : 51,7 Ko


    Ami calmant, J.P

  5. #5
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut
    Bonjour mer ci pour ta réponse.

    Lorsque je lance ta macro, j'ai une erreur 9.


    Nom : erreur.JPG
Affichages : 212
Taille : 66,0 Ko

    maintenant, j'ai renommé ma feuille, et j'ai une autre erreur , la voici.

    Nom : erreur2.JPG
Affichages : 221
Taille : 83,1 Ko

    Merci encore pour ta réponse réponse,
    Bonne journée

    amicalement

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 193
    Par défaut
    mon code n'est qu'un exemple, il faut l'adapter à ton classeur . Il y a une plage nommée (Coords) sur la feuille Country chez moi. Cette plage représente les coordonnées en entrée (C2 : D200).
    Et quand il y a une erreur il faut dire sur quelle ligne

  7. #7
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut
    ok ok désolé alors celui la pour les plage a changé je ne l'ai pas vu arrivé!

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/06/2019, 10h38
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo