XL 2010 Des mises en forme capricieuses

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Dans une cellule je rentre une valeur décimale comprise dans l’intervalle [0 ; 90] qui représente des degrés décimaux. Une fois cette valeur entrée, dans les 3 cellules contiguës s’affichent la conversion de cette valeur en degrés sexagésimaux : degrés | minutes | secondes.

Au niveau calculs tout marche bien. Le problème réside dans la mise en forme des résultats en degrés sexagésimaux. Je voudrais qu’elle soit toujours ainsi : 00° | 00’ | 00,000’’
Par exemple : 33° | 02’ | 05,120’’

Malheureusement, cette mise en forme ne marche d’emblée pas à tous les coups, par exemple :
Je rentre 25,125 --> 25° | 07’ | 030,000’’
Je rentre à nouveau cette même valeur, et là c’est bon --> 25° | 07’ | 30,000’’

Dans la PJ j’ai résumé au maximum les macros de mon application.

Comment résoudre ce problème ?
 

Pièces jointes

  • Exemple.xlsm
    22.6 KB · Affichages: 15

Modeste geedee

XLDnaute Barbatruc
Bonjour,

Dans une cellule je rentre une valeur décimale comprise dans l’intervalle [0 ; 90] qui représente des degrés décimaux. Une fois cette valeur entrée, dans les 3 cellules contiguës s’affichent la conversion de cette valeur en degrés sexagésimaux : degrés | minutes | secondes.
Comment résoudre ce problème ?

:cool: pourquoi passer par VBA ???
1599503376852.png
 

Magic_Doctor

XLDnaute Barbatruc
Bonjour Modeste geedee,

Parce que c'est comme ça, je ne peux pas faire autrement. Ce n'est qu'un morceau de tout un échafaudage qui ne peut être manié que par VBA.
Ce qu'il y a de curieux, c'est que ça marche bien, mais parfois il faut rentrer 2 fois de suite la même valeur pour obtenir la mise en forme escomptée.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Magic_doctor, Modeste geedee

J'ai l'impression que ce format ne plait pas : DD.NumberFormat = """0""0.000""''"""

J'ai remplacé ça :
VB:
If DD.Value < 10 Then
   DD.NumberFormat = """0""0.000""''"""    'format personnalisé
Else
   DD.NumberFormat = "0.000""''"""         'format personnalisé
End If
par simplement :
Code:
DD.NumberFormat = "0.000""''"""         'format personnalisé
et je n'ai pas vu où ça coincé.
 

Magic_Doctor

XLDnaute Barbatruc
Bonsoir sylvanu, soan,

Ce n'était pas un problème de mise en forme et encore moins d'années bissextiles (qui, que je sache, n'ont rien à voir avec le problème), mais de "charrue avant les bœufs". Je m'explique : j'avais mis la mise en forme avant le résultat :
VB:
Private Sub Worksheet_Change(ByVal target As Range)

Dim i As Byte
    
    If Not Intersect(target, [C4]) Is Nothing Then
    
        'ControleSaisie target.Address 'contrôle et met en forme la saisie de la latitude
        
        'Conversion des degrés décimaux en degrés sexagésimaux
        For i = 1 To 3
            target.Offset(0, i + 1) = DD_DMS(target, i)
        Next
        
        ControleSaisie target.Address 'contrôle et met en forme la saisie de la latitude
        
    End If

End Sub
Voilà pourquoi je devais souvent rentrer 2 fois la même valeur pour obtenir la bonne mise en forme.
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Hola,
Pero ¿qué tiene que ver el monumento a los últimos Charruas? que, si mal no recuerdo, se murieron en Paris donde los deportaron como bestias de circo. ¡Una vergüenza!
Bon, maintenant d'accord, nos résultats sont identiques.
:cool: simple élucubration et association d'idées concernant mes seules connaissances à propos de l'Uruguay coordonnées GPS -34.8597479 S,-56.208965 W
(pendant des années, un collègue avait cette photo de statues sur son bureau)
 

Magic_Doctor

XLDnaute Barbatruc
Effectivement, j'aurais dû m'en douter.
Les coordonnées de ma maison étant : -56,0951 S | -34,8952 W

Charrúas.jpg

Les derniers Charrúas après le massacre de Salsipuedes par le général Rivera.
Ils furent déportés en France...
Certains de leurs restes furent restitués il y a un vingtaine d'années.
L'Uruguay est le seul pays d'Amérique latine sans indiens...
 

Discussions similaires