• Initiateur de la discussion Initiateur de la discussion Domi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

@+
 
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
 
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 ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
411
Retour