visual basic : comment mieux gérer les dates dans mon prog ???

visual basic : comment mieux gérer les dates dans mon prog ??? - VB/VBA/VBS - Programmation

Marsh Posté le 22-05-2002 à 23:09:25    

bon voilà ma copine a une macro à faire sous excel pour calculer le prix d'une visite d'un monument. pour celà on a une baisse saison et une haute saison. la durée du trajet dépend de la saison.  
la durée de la visite est fixe et est de 1h30.
le temps total de la visite comprend la durée du visite et du trajet
le cout du guide est de 100fr/h
J'ai pondu le prog suivant. ça marche mais bon je suis pas trop content au niveau des types dates et tout ça. j'ai chercher sur des bouquins et j'ai pas trop trouvé (en plus ça fait plus d'un an que j'ai pas touché à du visual basic ce que je regrette pas du tout d'ailleurs car c vraiment un langage pourri !). bon bref voilà mon prog :  
 
 
Sub waza() ' début de la procédure
 
'-----------------------------
'- déclaration des variables -
'-----------------------------
 
Dim début_haute_saison As Date ' déclaration d'une variable de type date représentant le début de la haute saison
Dim fin_haute_saison As Date ' déclaration d'une variable de type date représentant la fin de la haute saison
Dim durée_haute_saison As Integer ' déclaration d'une variable de type entier représentant la durée du trajet en nombre de minutes en haute saison
Dim durée_basse_saison As Integer ' déclaration d'une variable de type entier représentant la durée du trajet en nombre de minutes en basse saison
 
'-----------------------------
'- initialisation des variables -
'-----------------------------
 
début_haute_saison = #7/1/2002#  ' début de la haute saison mm/jj/yyyy
fin_haute_saison = #9/1/2002# ' fin de la haute saison mm/jj/yyyy
durée_haute_saison = 10 ' en minutes
durée_basse_saison = 5 ' en minutes
 
' B1 = date de la sortie
' B3 = km à parcourir
' B9 = temps de transport en MINUTES
' B11 = temps de la visite en hh:mm
' B13 = temps total en minute
' B15 = cout du guide
' B17 = cout du guide en euros !!!!!!!!!!! ? bah oui on compte plus en franc !!! non mais c GEA....
 
'-----------------------------
'- début des actions -
'-----------------------------
 
If (Month(début_haute_saison) < Month((Range("B1" )))) Then ' si la date de la visite est supérieure au début de la haute saison on continue
 If Month((Range("B1" ))) < Month(fin_haute_saison) Then ' si la date de la visite est inférieure à la fin de la haute saison alors on se trouve dans la haute saison (d'après la condition précédente)
   Range("B9" ).Select ' on sélectionne la cellule où l'on va enregistrer la durée du trajet
   ActiveCell.Value = (durée_haute_saison * (Range("B3" ))) ' on calcul et on enregistre la durée du trajet
 Else ' dans ce cas la date se situe après la fin de la haute_saison
   Range("B9" ).Select ' on sélectionne la cellule où l'on va enregistrer la durée du trajet
   ActiveCell.Value = (durée_basse_saison * (Range("B3" ))) ' on calcul et on enregistre la durée du trajet
 End If
Else ' dans ce cas la date se situe avant le début de la haute_saison
 Range("B9" ).Select ' on sélectionne la cellule où l'on va enregistrer la durée du trajet
 ActiveCell.Value = (durée_basse_saison * (Range("B3" ))) ' on calcul et on enregistre la durée du trajet
End If
 
Range("B13" ).Select ' on selectionne la cellule pour le temps total en minute
ActiveCell.Value = Minute(Range("B11" )) + Hour(Range("B11" )) * 60 + Range("B9" ) ' B11 étant exprimé en hh:mm on prend d'abord les minutes grâce à minute(range("B11" )) puis on ajoute les heures transformées en minutes grâce à la fonction Hour(Range("B11" )) * 60 puis on ajoute le temps du trajet avec la fonction range("B9" )
 
Range("B15" ).Select ' on selectionne la cellule pour le cout du guide
ActiveCell.Value = (100 / 60) * Range("B13" ) ' on calcul le cout du guide par minute grâce à (100 / 60) puis on le multiplie par le temps total en minute (situé dans la cellule 13) grâce à la fonction Range("B13" )
 
End Sub ' fin de la procédure

 

[jfdsdjhfuetppo]--Message édité par lordankou le 22-05-2002 à 23:10:23--[/jfdsdjhfuetppo]


---------------

Reply

Marsh Posté le 22-05-2002 à 23:09:25   

Reply

Marsh Posté le 23-05-2002 à 08:32:07    

tu pourrais être plus précis ??
je comprends pas bien ton pb la...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 23-05-2002 à 09:24:41    

bah euh le problème c que j'aurais voulu mettre en date les variables durée_haute_saison et durée_basse_saison qui sont pour l'instant en integer. le problème c que quand je mes en date il me mettra toujours sous la forme hh/mm/ss et il me mettra automatiquement  12h pour les heures. bon j'avais réussi à contourner ce problème en utilisant minute(durée_haute_saison) afin de retourner seulement les minutes mais quand je veux enregistrer ce résultat dans une cellule avec  
 
Range("B13" ).Select
ActiveCell.Value = (minute(durée_basse_saison) * (Range("B3" )))
 
il me calcul bien la durée du trajet mais dans la feuille excel il mettre les minutes pour des jours !  
ça veut donc dire que quand je retourne 10 min il me marque sur excel :
10/01/1899 00:00:00  
alors qu'il faudrait qu'il me marque 00:10:00 car je m'en fous royalement de la date !
j'ai beau modifier dans le format de la cellule pour spécifier ce que je veux il me change pas !!!!


---------------

Reply

Marsh Posté le 23-05-2002 à 09:30:26    

pour les integer en variables, tu peux peut etre utiliser  
format(mydate, Format) , pour convertir la date en minutes ou ce que tu veux...
 
par contre pour ce qui est de excel, c pas normal qu'il ne te change pas les mn si tu changes le type de la cellule... A voir !


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 23-05-2002 à 09:44:00    

oui c vrai qu'il faudrait que j'utilise format mais bon ça devrait pas trop poser de prb ça (y'a qu'à trouver la doc et ça ira) mais c surtout excel qui me pose problème.  
faudra spécifier à la cellule que c bien des minutes qu'on rentre à partir de la macro mais bon là je vois pas !
franchement donné ça à des GEA faut pas déconner loool.
à la limite c presque plus dur que ce qu'on voit en Info mdrr  :pt1cable:


---------------

Reply

Marsh Posté le 23-05-2002 à 09:47:12    

lordankou a écrit a écrit :

oui c vrai qu'il faudrait que j'utilise format mais bon ça devrait pas trop poser de prb ça (y'a qu'à trouver la doc et ça ira) mais c surtout excel qui me pose problème.  
faudra spécifier à la cellule que c bien des minutes qu'on rentre à partir de la macro mais bon là je vois pas !
franchement donné ça à des GEA faut pas déconner loool.
à la limite c presque plus dur que ce qu'on voit en Info mdrr  :pt1cable:  




 
pas trop non !  
pour excel j'en sais pas plus
ptet qu'il existe un truc du genre range(".." ).format ou qqchose comme ça ?...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 23-05-2002 à 09:57:07    

bah j'ai regardé et j'ai pas trouvé justement. c pas délire les macros sous excel j'ai l'impression. ou alors c vraiment tordu ! remarque vu comment c tordu le vb ça serait pas étonnant  :o


---------------

Reply

Marsh Posté le 23-05-2002 à 10:07:54    

lordankou a écrit a écrit :

bah j'ai regardé et j'ai pas trouvé justement. c pas délire les macros sous excel j'ai l'impression. ou alors c vraiment tordu ! remarque vu comment c tordu le vb ça serait pas étonnant  :o  




 
tu m'étonnes, c clair que c tordu
y'a un mois, j'avais un document à créer automatiquement sous excel à partir d'une base de données... j'en ai chié je te dis pas...  :lol:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 23-05-2002 à 10:14:57    

ouais bah je crois que je vais pas chercher plus loin. après tout ça marche même si c pas super génial comme méthode mais bon là j'ai de l'assembleur et du c à faire donc faut que je bosse !


---------------

Reply

Marsh Posté le 23-05-2002 à 10:18:16    

lordankou a écrit a écrit :

ouais bah je crois que je vais pas chercher plus loin. après tout ça marche même si c pas super génial comme méthode mais bon là j'ai de l'assembleur et du c à faire donc faut que je bosse !  




ok bon courage et a+  :p


---------------
Music|Market|Feed|Loom|DVD
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed