mesdebuts
Messages postés7Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention18 mai 2007
-
16 mai 2007 à 13:44
mesdebuts
Messages postés7Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention18 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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?