Degre minute seconde

Résolu
mesdebuts Messages postés 7 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 16 mai 2007 à 13:44
mesdebuts Messages postés 7 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 18 mai 2007 à 14:01
Bonjour à tous ,



Je fais appel à vous car je rencontre un souci dans un de mes programmes en VBA ou VB
Je m'explique :
J'ai une cellule où il y a des degrés minutes secondes (DMS), et dans une autre j'ai un autre DMS.
Je doit faire la différence entre les deux et si il y a un ecart trop important je dois faire apparaitre le DMS en rouge.
Le problème de l'écart et de le faire apparaitre en rouge n'est pas un souci.

Je fais donc appel à vous pour savoir comment faire des calculs de DMS mais aussi mon premier souci est que mes données en DMS sont sous la forme : xx : xx : xx  par exemple : 90:45:32.

Plus précisement j'ai une valeur : 90:42:32 et je dois faire la différence avec une valeur nominale 90:40:30.
Donc je fais la différence et si l'écart est trop grand j'écrit 90:42:32 en rouge.

Le fait est que j'arrive pas à calculer avec ce format, comment convertir le 90 : 42 : 32 en vrai DMS pour ensuite faire les calculs normals.

Merci pour votre attention et pour l'aide que vous m'apporterez.

5 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 18:57
Bon...
De façon plus générale et pour redevenir plus sérieux avec mes noms de variable :

Private Sub Command1_Click()
  resultat = 247914
  nbgousset = resultat
  calculons nbgousset, nbsachet, 7 ' si un sachet contient 7 goussets
  calculons nbsachet, nbsac, 43 ' si un sac contient 29 sachets
  calculons nbsac, nbcarton, 14 'si un carton contient 14 sacs
  MsgBox nbcarton & " carton(s) " & nbsac & " sac(s) " & nbsachet & " sachet(s) " & nbgousset & " gousset(s)"
End Sub
Private Sub calculons(uniteencours, uniteaudessus, rapport)
  uniteaudessus = uniteencours \ rapport
  uniteencours = uniteencours Mod rapport
End Sub

Ce mode de calcul est vrai pour tout (heures, degrés, monnaies, etc...) et fort simple à mettre en oeuvre, y compris pour des répartitions en éléments bien plus nombreux...

Faut un snippet pour çà ?
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 13:54
Salut,
Regarde cette discution, peut être pourra t'elle t'apporter un éléments de réponse.

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 14:18
Hé bé !
Quelles que soient les unités (degrés, minutes, secondes ... heures, minutes, secondes, ... yards, pieds, pouces... Monnaies anglosaxones...etc...) qui ne répondent pas au système décimal, le truc peut être toujours le même :
1) transformer le tout en unités de la plus petite valeur (ici en secondes)
2) faire ses opérations sur ces nombres de plus petite unité
3) utiliser les opérateurs \ et mod pour retransposer en unités  "normales"

Regarder, par exemple, le mécanisme que j'ai eu l'occasion d'exposer très récemment (et finalement pour le roi de Prusse car le demandeur a "découvert" finalement qu'il ne travaillait pas sous VB mais... sous PHP !...)
Et l'appliquer sauvagement (toujours vrai)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 15:02
Re,

J'ai fait ceci pour ilmlustrer celà, donc ...

Private Sub Command1_Click()
' exemple pour ces bébêtes-là ...
'on part du principe selon lequel nous avons 21 bidules dans un dodo, 43 machins dans un bidule
'et 8 zizirate dans un machin
' la plus petite unité est donc un zizirate
'admettons (simple à faire que l'on ait tout transformé en nombre de zizirate (ici la variable resultat)
 resultat = 367961
 nbmachin = resultat \ 8
 nbzizirate = resultat Mod 8
 nbbidule = nbmachin \ 43
 nbmachin = nbmachin Mod 43
 nbdodo = nbbidule \ 21
 nbbidule = nbbidule Mod 21
 MsgBox "nous avons donc " & nbdodo & " dodos " & nbbidule & " bidules " & _
 nbmachin & " machins " & nbzizirate & " zizirates , ce qui fait bien " & _
 (nbdodo * 21 * 43 * 8) + (nbbidule * 43 * 8) + (nbmachin * 8) + nbzizirate & _
 " à comparer donc avec la donnée de départ, à savoir resultat = " & resultat
End Sub

Ouala tout !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mesdebuts Messages postés 7 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 18 mai 2007
18 mai 2007 à 14:01
Merci pour votre aide je vais essayer de mettre ça en place et si j'ai des souci je reviendrai par ici lol
bon week end.
0
Rejoignez-nous