Problème Degré Minutes

bonjour

272000-essai.xlsx (12.96 Ko)

Dans le fichier joint en colonne B7 à B11 (les seules dont j'ai besoin pour ce calcul qui me pose problème ici) les coordonnées en degrés/minutes

en E7 E11 leur conversion format HMS.

les formules qui sont incomplètes sont en H10-H13

elles sont la différence entre deux positions mais si le nombre de degré est supérieur a 180 sa position est de 360- position

dans la partie envoyé cela fonction pour ces valeurs mais si je mets les valeurs du dessous(encadrées de rouge) j'obtiens une erreur

qu'ai je oublié comme condition dans ma formule ?

Merci de l'aide apportée

Belle journée

Personne ne peut m'aider?

Bonjour,

SI(ET(E8<180°; E8<E7), ce cas de figure me semble t-il n'est pas traité .

Cdlt

oui ok mais cette seule condition ne resout pas la formule... est mettre 180° n'est pas compris la condiotion est 7.5 ...

mais dans quelle priorité cette condition non traitée?

je viens de tester en derniere position est ca donne l'erreur ##### à cause d'un resultat négatif

bonjour,

une proposition de fonctions personnalisées, faisant le calcul sur des données deg°,min',sec'', sans passer par un type(date/time excel).

sommeangle(plage, modulo), fait la somme des angles notés sous format (deg°min'sec'') et en fait le modulo éventuel voir exemples en M21 et en G17 à G21

diffangle(angle1,angle2) fait la différence de 2 angles en appliquant la règle 360-résultat si résultat > 180 (que je ne suis pas sûr d'avoir bien comprise/appliquée), voir exemples en H18:K26

162000-essai.xlsm (23.58 Ko)

je crains que sommeangle ne soit pas valide sous 2007...

bonjour,

s'agissant d'une fonction personnalisée (en vba), sans dépendance avec la version excel (à ma connaissance), si le code de la fonction est copié dans ton classeur, je ne vois pas pourquoi ce ne serait pas valide sous 2007.

voici le code des différentes fonctions que j'ai mises dans ton classeur

Function sommeangle(plage, Optional modulo = 0)
    r = 0
    For Each angle In plage
        If angle <> "" Then
            a1 = angleensec(angle)
            r = r + a1
        End If
    Next
    d = Int(r / 3600)
    If modulo > 0 Then d = d Mod modulo
    r = r Mod 3600
    m = Int(r / 60)
    s = r Mod 60
    sommeangle = Format(d, "#0°") & Format(m, "00'") & Format(s, "00''")
End Function
Function diffangle(angle1, Optional angle2 = "0°")
    a1 = angleensec(angle1)
    a2 = angleensec(angle2)
    If a1 < a2 Then a1 = 360 * 3600# + a1
    r = a1 - a2
    d = Int(r / 3600) Mod 360
    If d > 180 Then r = 360 * 3600# - r: d = Int(r / 3600) Mod 360
    r = r Mod 3600
    m = Int(r / 60)
    s = r Mod 60
    diffangle = Format(d, "#0°") & Format(m, "00'") & Format(s, "00''")
End Function

Function angleensec(angle)
    Dim r(0 To 2)
    For i = 1 To Len(angle)
        car = Mid(angle, i, 1)
        If car Like "[0-9]" Then
            v = v & car
        Else
            Select Case car
                Case "°"
                    r(0) = v Mod 360 'les degrés
                Case "'"
                    If i < Len(angle) Then
                        If Mid(angle, i + 1, 1) = "'" Then ' deux ' successifs sont des secondes
                            r(2) = v
                            i = i + 1
                        Else
                            r(1) = v 'les minutes
                        End If
                    Else
                        r(1) = v 'les minutes
                    End If
            End Select
            v = ""
        End If
    Next i
    angleensec = r(0) * 3600 + r(1) * 60 + r(2)
End Function
Rechercher des sujets similaires à "probleme degre minutes"