conversion décimal en degré, minute, seconde - VB/VBA/VBS - Programmation
Marsh Posté le 28-10-2006 à 15:23:20
Sous forme de Fonction personnalisée
Code a copier dans un Module
Sous VBA : Menu Insertion | Module
|
Puis sous Excel
Sélectionner une cellule
Menu Insertion | Fonction | Sélectionner une Catégorie : Personnalisées
Suivre l'assistant en sélectionnant la cellule contenant la valeur à convertir
Marsh Posté le 28-10-2006 à 15:38:08
Bonjour,
tu peux remplacer dec="1:" par :
dec=1/24
Cordialement
Marsh Posté le 28-10-2006 à 19:24:32
Merci de vos réponses.
J'ai été séduit par le remplacement : dec=1/24.
Je l'ai donc testé à la macro et ca donne ceci. Cela marche pour une seule cellule. Mais j'aurais aimé l'appliquer sur la sélection de plusieurs cellules. Quelqu'un aurait il la solution ?
Sub deg()
If ActiveCell.Value < 0 Then GoTo Suite
ActiveCell.Value = ActiveCell.Value * 1 / 24
With Selection
Selection.NumberFormat = "[h]""° ""mm""' ""ss""''"""
End With
Exit Sub
Suite:
ActiveCell.Value = Abs(ActiveCell.Value) * 1 / 24
With Selection
Selection.NumberFormat = "-[h]""° ""mm""' ""ss""''"""
End With
End Sub
Marsh Posté le 28-10-2006 à 21:35:08
Je t'ai donné une solution qui elle a l'avantage de marcher ...
Par exemple 56986,05236 donnera 106° 03' 08''
La duplication de fonction marchant de la même manière que pour les fonctions intégrées d'Excel
Mais c'est peut être le concept de fonction sur lequel tu butes ?
et pourtant tu as dû déjà taper des trucs du genre =SOMME(A1:A2) pour la fonction
intégrée SOMME, ici c'est la même chose sauf qu'elle a été créée par l'utilisateur
Marsh Posté le 29-10-2006 à 10:14:59
Bonjour,
Voici de quoi choisir:
le premier xls présente ta méthode "limitée" que j'ai un peu arrangée
plus celle de kiki29
http://cjoint.com/?kDjCGImIw0
le deuxième .xls présente ta méthode modulo 360
plus celle de kiki29
http://cjoint.com/?kDkr1k8Zu3
à toi de voir et de tester
Cordialement
Marsh Posté le 29-10-2006 à 10:58:37
Je cherche la méthode avec recouvrement. Mes angles sont au maximum de 360° alors la méthode ci après me convient très bien.
Mais le test ne fonctionne pas. Je n'arrive pas à lire la macro. Excel ne comprend pas Sub Deg(rr As Range) et rr.Activate.
Sub Deg(rr As Range)
' Ta méthode avec recouvrement
signe = " "
rr.Activate
With ActiveCell
If .Value < 0 Then signe = "-"
.Value = Abs(ActiveCell.Value) / 24
.NumberFormat = signe & "[h]""° ""mm""' ""ss""''"""
End With
End Sub
Marsh Posté le 29-10-2006 à 11:05:55
Bonjour,
as-tu regardé dans feuil1 de vbe ?
au niveau de worksheet_change?
fais un classeur d'essai et envois le
Cordialement
Marsh Posté le 29-10-2006 à 13:36:42
Voila ce que j'ai fait dans WorkSheet. Il me met "erreur de compilation".
Pourquoi n'insère tu pas la macro dans un Module, tout simplement ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
signe = " "
ByVal.Activate
With ActiveCell
If .Value < 0 Then signe = "-"
.Value = Abs(ActiveCell.Value) / 24
.NumberFormat = signe & "[h]""° ""mm""' ""ss""''"""
End With
End Sub
Marsh Posté le 29-10-2006 à 14:05:28
Bonjour,
Byval.activate ne serait-ce pas Target.activate
tu avais parlé de plusieurs cellules à calculer, pas de toutes les cellules que tu vas saisir. Ensuite, mais je n'ai pas le temps de faire l'essai, avec ta macro en supposant que tu puisses la faire fonctionner, sélectionnes une cellule déja calculée , saisis une valeur, puis sélectionnes une autre autre, l'évènement selection_change s'éxécute et calcul la cellule suivante et non pas celle que tu as quittée
A ce soir
Cordialement
Marsh Posté le 29-10-2006 à 15:24:43
En fait, après avoir saisi des valeurs décimales dans plusieurs cellules différentes de ma feuille Excel, je souhaite toutes les convertir (après sélection) en degré, minute, seconde. Le programme ci après permet de faire la conversion uniquement de la cellule active et non de toutes les cellules sélectionnées !
seniorpapou vient stp à mon aide. Merci.
Sub Deg()
signe = " "
With ActiveCell
If .Value < 0 Then signe = "-"
.Value = Abs(ActiveCell.Value) / 24
.NumberFormat = signe & "[h]""° ""mm""' ""ss""''"""
End With
End Sub
Marsh Posté le 29-10-2006 à 15:46:00
Ca y est, EUREKA ! Après maintes essais, j'ai trouvé quelque chose qui tient la route. Et tout ceci grace à vous. Merci encore.
Sub Deg()
Dim r As Range
For Each r In Selection
signe = " "
With r
If .Value < 0 Then signe = "-"
.Value = Abs(r.Value) / 24
.NumberFormat = signe & "[h]""° ""mm""' ""ss""''"""
End With
Next r
End Sub
Marsh Posté le 29-10-2006 à 18:32:30
Bonsoir,
Je suis content que tu aies réalisé quelque chose qui te donne satisfaction.
A bientôt
Cordialement
Marsh Posté le 31-03-2010 à 22:51:15
Bonsoir,
J’ais un petit problème avec mon programme en micro C, j'aimerais faire une conversion d’une valeur décimal en une valeur en degré Celsius, et je trouve pas comment faire l'équation, aidez moi s'il te plais a le faire
Merci d'avance
Marsh Posté le 28-10-2006 à 13:14:28
Pb de programmation excel vba
Je souhaite convertir des valeurs décimales (ex: 12.236) en degré, minute, seconde (12° 14' 09" ).
Mon programme ne fonctionne pas, HELP ME :
Sub deg()
Dim Dec As Variant
Dec = "1:"
ActiveCell.Value = ActiveCell.Value * Dec
With Selection
Selection.NumberFormat = "[h]""° ""mm""' ""ss""''"""
End With
End Sub