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