Temps restant [Résolu]

Signaler
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour. Je cherche comment faire pour que quand je clique sur executer. Le temps choisi (Heure d'execution) disparait et apparait le temps restant . Merci

13 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Lorsque tu dis "Cela de marche pas" pense à expliquer un peu mieux.
1- Cela plante avec une erreur VB?
2- Rien ne se passe?

Dans mon exemple je calculais le temps restant entre l'heure actuelle et 19:50:00
Mais ce matin et a cette heure ci cela donne une erreur de dépassement de capacite (= >'Attention je n'ai pas fait de traitement si il sépare + 32765 secondes)

Donc il faut faire autrement.

Comme test Place dans un nouveau projet un label => Label1 un Timer => Timer1 et un Bouton => Command1

place le code suivant dans la Form et appuie sur le bouton. (est ce que cela ne fonctionne pas )
Il y a peu etre une erreur de 1 ou 2 secondes. mais j ai fait cela vite fait.

Private TimeExecute As Date 
Private TimeLeft As Date 

Private Sub Command1_Click() 
Timer1.Interval = 1000 
Timer1.Enabled = True 
'Remplacer 19 par heure choisi dans combo
'Remplacer 50 par Minutes choisi dans combo
'Remplacer 0 par Seoncdes choisi dans combo
TimeExecute =  TimeSerial (19, 50, 0) 
End Sub 

Private Sub Timer1_Timer() 

Dim SecondesLeft As Long 
Dim HeuresRestantes As Integer 
Dim MinutesRestantes As Integer 
Dim tmpS As Integer 

'Difference en Secondes entre L'heure actuelle et TimeExecute
SecondesLeft  = DateDiff("s", Time, TimeExecute) 
'Calucl du nombre d'heure restante en fonction des secondes
HeuresRestantes =  SecondesLeft \ 3600 
'Calcul du reste des secondes
tmpS = SecondesLeft - (HeuresRestantes * 3600) 
'Calcul des minutes selon le reste des secondes
MinutesRestantes = tmpS \ 60 
'Calcul des secondes restante
SecondesLeft = tmpS - (MinutesRestantes * 60) 
'Calcul de Time Left
TimeLeft =  TimeSerial (HeuresRestantes, MinutesRestantes, SecondesLeft) 
'TimeLeft te donne alors le tezmps entre L heure actuelle et l'heure choisie
Label1.Caption  = CStr(TimeLeft) 
End Sub 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+, Julien
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
Dans ce cas c'est TimeExecute = Format(MHeure, "hh:mm:ss")

@+, Julien
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,

A l'aide d'un Timer (Interval 1000) tu calcule le temps entre l'heure selectionnée et l'heure actuelle

Private TimeExecute as Date
Private TimeLeft as Date

Private Sub Cmd_Execute_Click()
Timer1.Interval = 1000
Timer1.Enabled = True
TimeExecute = TimeSerial(19,50,0)
End Sub

Private Sub Timer1_Timer()
'Attention je n'ai pas fait de traitement si il sépare + 32765 secondes
TimeLeft = TimeSerial(0,0, DateDiff("s", Time, TimeExecute)
'TimeLeft te donne alors le tezmps entre L heure actuelle et l'heure choisie
End Sub

@+, Julien
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

Bonjour. Et il faut creer quoi comme des objets (label...)?
Quand j'essaye de lancer comme tu a ecrit j'ai une problemme avec *TimeExecute =*
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Les as tu déclarer comme je te le disais
'Ce sont des variable a mettre tout en haut du Form.
Private TimeExecute as Date
Private TimeLeft as Date

ce sera deux variable INTERNES au programme, a toi de creer les label que tu souhaite pour afficher en temps réel la valeur de TimeLeft

Dnas cecas NomDuLabel.Caption = Cstr(TimeLeft) dans Timer1_Timeer

@+, Julien
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

J'ai mis sa au debit du Form
Private TimeExecute as Date
Private TimeLeft as Date

Puis j'ai cree une Label1 et Timer1.
Dans le Timer j'ai mi sa:
Private Sub Timer1_Timer()
'Attention je n'ai pas fait de traitement si il sépare + 32765 secondes
TimeLeft = TimeSerial(0,0, DateDiff("s", Time, TimeExecute)
'TimeLeft te donne alors le tezmps entre L heure actuelle et l'heure choisie
End Sub

et dans le code ou il faut arreter le PC j'ai mis sa:
Timer1.Interval = 1000
Timer1.Enabled = True
TimeExecute = TimeSerial(19,50,0)

Et j'ai essaye de mettre dans le Timer1_Time()
Label1.Caption = Cstr(TimeLeft)

Mais sa marche pas. Peux tu me explique car je comprend rien en VB.Merci
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

En fait quand je lance le projet sa me dit l'heure actuel. Par example je vien de lancer le projet il est 10h32 sur le projet je choisi d'arreter mon pc a 17h. Donc ton code il va me compter qu'il reste 2h50min jusqu'au 19h50.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,


Chez moi avec le dernier code proposé cela me donne bien 6:00:00 (il est 11H) et je veux arreter le PC a 17 (=> TimeExecute = TimeSerial(17, 0, 0) )

La je ne comprends pas.
Si tu veux tu peux faire passer ton projet : epsylon9@gmail.com

@+, Julien
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

Quand je lance le projet il me dit l'heure actuel (ex.11h). Moi par example je veux que mon pc s'arrete a 19h50. Donc il va me conter combien il reste de temps. Mais si je cree un .exe et que je lance et quand je choisira par example 16h. Il va me compter combien il reste jusqu'au 19h50 comme tu la ecrit dans le code. Moi je veux juste que dans le TimeSerial sa met l'heure que a choisi l'utilisateur.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re;


C est pour cela que en commentaire j ai ecrit ceci:





'Remplacer 19 par heure choisi dans combo
'Remplacer 50 par Minutes choisi dans combo


'Remplacer 0 par Seoncdes choisi dans combo
TimeExecute   TimeSerial (19, 50, 0) > je pensais que tu avais compris qu il fallait remplacer par les valeur Du Controle contenu dans la frame "Heure d'execution"




Quel est le controle que tu utilise pour la saisie de l'heure = > Peu etre n'auras tu meme pas besoin de
TimeExecute =  TimeSerial (19, 50, 0) 
Mais simplement de TimeExecute = NomDuCOntrole.Time (ou Value ou je ne sais quoi.)






@+, Julien
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

ce ce projet la. http://www.vbfrance.com/code.aspx?ID=16691
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

Un grand merci a toi.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Bah de rien on est la pour ca


@Plus suir le forum






@+, Julien