Comment convertir des angles degrés/minutes/secondes vers ou à partir des angles décimaux dans Excel

Notes

Office 365 ProPlus est renommé Applications Microsoft 365 pour les entreprises. Pour plus d’informations sur ce changement, lisez ce billet de blog.

Résumé

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

Cet article contient un exemple de fonction personnalisée que vous pouvez utiliser pour convertir une valeur de degré stockée au format décimal, en DMS stocké au format texte, et un exemple de fonction qui convertit DMS en une valeur de degré stockée au format décimal.

Informations supplémentaires

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie, exprimée ou implicite, y compris, mais sans s’y limiter, les garanties implicites de qualité et/ou d’aptitude à un usage particulier. Cet article suppose que vous connaissez le langage de programmation démontré et les outils utilisés pour créer et déboguer des procédures. Les professionnels du support Microsoft peuvent expliquer les fonctionnalités d’une procédure particulière, mais ils ne modifient pas ces exemples pour fournir des fonctionnalités ou créer des procédures pour répondre à vos besoins spécifiques.

Si vous avez une expérience de programmation limitée, vous pouvez contacter un service Microsoft Advisory Services. Pour plus d’informations, visitez le site Web Microsoft :

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

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

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

La fonction personnalisée Microsoft Visual Basic pour Applications suivante accepte un angle formaté en tant que valeur décimale et la convertit en valeur de texte affichée en 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 l’éditeur Visual Basic’édition.

  2. Dans le menu Insertion, cliquez sur Module.

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

  4. Appuyez sur ALT+F11 pour revenir à Excel.

  5. Dans la cellule A1, tapez 10,46.

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

    La formule renvoie 10°27'36 »

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

La fonction personnalisée Microsoft Visual Basic pour Applications suivante accepte une chaîne de texte de degrés, minutes et secondes formatées dans le même format que celui de la fonction Convert_Degree (par exemple, 10° 27' 36 ») et la convertit en angle format décimal. Il s’agit exactement de l’inverse de la Convert_Degree personnalisée.

Avertissement

Cette fonction personnalisée échoue si l’argument Degree_Deg n’est pas au format ° ' " même si la valeur des secondes <degrees> <minutes> est <seconds> 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.
    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 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 l’éditeur Visual Basic.

  2. Dans le menu Insertion, cliquez sur Module.

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

  4. Appuyez sur ALT+F11 pour revenir à Excel.

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

    =Convert_Decimal(« 10° 27' 36"" »)

    Notes

    Vous devez taper trois guillemets (« ») à la fin de l’argument de cette formule pour équilibrer les guillemets pour les secondes et les guillemets pour la chaîne de texte. Une référence de cellule ne nécessite pas de guillemets.

  6. La formule renvoie 10,46