Comment convertir des angles décimaux en degrés/minutes/secondes et inversement dans Excel

Résumé

Les mesures des angles sont généralement exprimées en degrés, minutes et secondes (DMS). 1 degré est égal à 60 minutes et une minute est égale à 60 secondes. Pour simplifier certains calculs mathématiques, vous pouvez exprimer les mesures d’angles en degrés et fractions décimales de degrés.

Cet article contient un exemple de fonction personnalisée qui vous permet de convertir une valeur en degrés stockée au forme décimal en valeur DMS stockée au format texte, de même qu’un exemple de fonction qui convertit une valeur DMS en valeur en degrés stockée au format décimal.

Informations supplémentaires

Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie explicite ou implicite, y compris, de manière non limitative, les garanties implicites de qualité marchande et/ou d’adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d’une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.

Si vous ne maîtrisez que partiellement la programmation, vous pouvez contacter les Services de conseil de Microsoft. Pour plus d’informations, reportez-vous au site web de Microsoft suivant :

Microsoft Advisory Services - https://support.microsoft.com/gp/advisoryservice

Pour plus d’informations sur les options de support disponibles et la façon de contacter Microsoft, rendez-vous sur https://support.microsoft.com.

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

La fonction personnalisée Microsoft Visual Basic pour Applications suivante convertit un angle exprimé sous forme de valeur décimale en une valeur texte affichée sous forme de degrés, minutes et secondes.

Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Decimal_Deg)
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Decimal_Deg - Degrees) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")
        'Returns the Result of degree conversion
        '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = " " & Degrees & "° " & Int(Minutes) & " ' " & Seconds + Chr(34)
    End With
End Function

Pour utiliser cette fonction, créez une formule de conversion, comme dans l’exemple suivant :

  1. Démarrez Excel puis appuyez sur Alt + F11 pour démarrer Visual Basic Editor.

  2. Dans le menu Insertion, cliquez sur Module.

  3. Entrez l’exemple de code pour la fonction personnalisée Convert_Degree décrite ci-dessus dans la feuille de module.

  4. Appuyez sur Alt + F11 pour revenir dans Excel.

  5. Dans la cellule A1, tapez 10.46.

  6. Dans la cellule A2, tapez la formule suivante : =Convert_Degree(A1)

    La formule renvoie la valeur 10°27’36".

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

La fonction personnalisée Microsoft Visual Basic pour Applications suivante convertit une chaîne de texte de degrés, minutes et secondes utilisant exactement le même format que celui renvoyé par la fonction Convert_Degree (par exemple, 10° 27’ 36") en un angle exprimé sous forme de valeur décimale. Elle effectue donc l’opération inverse de la fonction personnalisée Convert_Degree.

Avertissement

Cette fonction personnalisée échoue si l’argument Degree_Deg n’est pas au format <degrés>° <minutes>’ <secondes> » même si la valeur des secondes est 0.

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.
   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

Pour utiliser cette fonction, créez une formule de conversion, comme dans l’exemple suivant :

  1. Démarrez Excel puis appuyez sur Alt + F11 pour démarrer Visual Basic Editor.

  2. Dans le menu Insertion, cliquez sur Module.

  3. Entrez l’exemple de code pour la fonction personnalisée Convert_Decimal décrite ci-dessus dans la feuille de module.

  4. Appuyez sur Alt + F11 pour revenir dans Excel.

  5. Dans la cellule A1, tapez la formule suivante :

    =Convert_Decimal("10° 27’ 36""")

    Remarque

    Vous devez taper trois guillemets (""") à la fin de l’argument de cette formule pour tenir compte des guillemets pour les secondes et la chaîne de texte, respectivement. Une référence de cellule ne requiert pas de guillemets.

  6. La formule renvoie 10.46.