Pb de format date

D

Domi

Guest
Bonjour à tous,
j'ai essayé sans succés de créer une 'Fonction Perso' qui utilise la Fonction VBA:
--> Format (expression, '[h]° mm' ss')
A priori le fait de mettre entre crochet l'heure pour avoir 'un temps cumulé' empèche le fonctionnement correct.
Donc ma question est, y a-t-il une astuce pour pouvoir utiliser le Format 'temps cumulé' avec la fonction Format de VBA?
En effet je voudrais quelque chose du type :'45° 30' 30' et non pas '21° 30' 30' à partir de '45,5083'

-POUR RESUME, J'AI-
Function DegToDMS(DegrésDécimaux As Double) As String
DegToDMS = Format((DegrésDécimaux / 24), ' [h]° mm' ss')
End Function
-QUI NE MARCHE PAS-

-ET-
Function DegToDMS(DegrésDécimaux As Double) As String
DegToDMS = Format((DegrésDécimaux / 24), ' h° mm' ss')
End Function
-QUI MARCHE MAIS NE CONVIENT PAS-

Merci à celui qui pourra m'éclairer ...
 

Bebere

XLDnaute Barbatruc
bonsoir Domi

'convertir des degrés entrés sous forme décimale (47,77)
'en degrés/minutes/secondes (47° 46' 12'')
'(format personnalisé du style : [h]'° 'm'' 's''''

Function DecDegresToDMS(N) As Double
'Dana DeLouis, mpep
'plage d'entrées acceptées : 0 - 360
'force la valeur N à entrer dans cette plage

If N < 0 Then N = N * -1
If N > 360 Then N = Evaluate(Replace('Mod(#.360)', '#', N))
DecDegresToDMS = _
TimeSerial(Int(N), 0, (N - Int(N)) * 3600)

End Function


à bientôt
 
D

Domi

Guest
Merci Bebere,
Mais malheureusement mon but est que la fonction me donne un résultat directement sous forme de texte (sans avoir à lui spécifier, dans la cellule, un format perso).
C'est la raison pour laquelle :
-->NomDelaFonction = Format((ValeurEnDegrés / 24), ' [h]° mm' ss')
me semblait le plus adaptée.
Sauf bien sur, que VBA ne digère pas le format '[h]' alors qu'il fonctionne parfaitement dans les feuilles Excel.
J'ose espérer que c'est mon manque de connaissance qui m'empèche d'avoir un résultat car on m'a dit qu'avec VBA on pouvait envoyer des fusés sur la lune ...

Merci quant même, en espérant que quelqu'un à la réponse à ce que souhaite faire.

@+
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Domi, bonsoir Bebere, :)

La solution de Bebere était plutôt sympa, non ? Enfin, si tu veux un résultat sous forme de texte, tu peux essayer ceci :

Function DegToDMS(DegDecimaux As Double) As String
'
Dim StrResultat As String
Dim Temp As Double
'
StrResultat = (Sgn(DegDecimaux) * Int(Abs(DegDecimaux))) Mod 360 & '° '
Temp = Abs(DegDecimaux - (Sgn(DegDecimaux) * Int(Abs(DegDecimaux)))) * 60
DegToDMS = StrResultat & Int(Temp) & '' ' & _
Int((Temp - Int(Temp)) * 60 + 0.5) & ''''
End Function

Fonction qui donne un résultat sous forme de texte modulo 2 Pi.

Voili, voilà, on a quand même pas envoyé une fusée sur la lune avec ça :)

Amicalement
Charly

Message édité par: Charly2, à: 13/11/2005 00:16
 
D

Domi

Guest
Merci à Laurent d'un autre 'excellent forum' sur Excel : X-Cell,
qui m'a proposé cette fonction :

Function DegDecToDMS(Degré_décimal As Double) As String
DegDecToDMS = Evaluate('TEXT(' & Replace(Degré_décimal / 24, ',', '.') & ',''[h]°mm'ss'')')
End Function

Pour ceux que ça pourrait intéresser cette fonction passe
des Degrés_décimaux au DMS (D°MM'SS')

Ca marche nickel

PS : Le caractère seconde (') en fin de chaine n’apparaît pas ( ???)

Merci à tout ceux qui solutionne tous nos pb ...
 

Discussions similaires