Adittionner deux heure différente

[Résolu]
Signaler
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010
-
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010
-
Bonjour
je souhaiterai ajouter deux heures mais je n'y  arrive pas, est t'il possible d'addionner 2 heures ou bien faut t-il passer par quelque chose de spécial?
voila ce que j'ai fait:
toto1 = Time
toto2 = "12:02:12"
toto2 = Format(toto2, "hh:mm:ss")

total = toto1 + toto2

et lorsque je teste j'ai une erreur d'imcompatibilié.
quelqu'un pourrais m'aide?
merci beauocup

13 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
le plus simple et sécurisé serait :


Dim dShutdownTime as Date

    dShutdownTime = Now + TimeSerial( Text1.Text, Text2.Text, Text3.Text)


(en ajoutant, bien sur, une vérification d'erreur de saisie)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
<Salut,

essaie ça plutôt :

Dim toto1 As Date, toto2 As Date, total as date

toto1 = Time
toto2 = "12:02:12"

total = toto1 + toto2

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
additionner 2 heures, c'est vague......
c'est 2 dates? (donc lendemain si somme > 24) ou juste ajout (possible 43:57:36)

voir TimeSerial

++
PCPT    [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

merci mortalino je vais voir ce que je peux faire avec.
pour répondre a PCPT c'est effectivement passé au lentemain si la somme est supérieur a 24H, je vais essay de faire un petit code je reviendrai si ca ne marche pas :)
merci en tout ca
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

voila un petit code que je viens de fait :
<hr />
Private Sub Command1_Click()If Text1.Text "" Then Text1.Text "00"If Text2.Text "" Then Text2.Text "00"If Text3.Text "" Then Text3.Text "00"
Dim toto1 As Date, toto2 As Date, total As Date
toto1 = Time
toto2 = Text1.Text & ":" & Text2.Text & ":" & Text3.Text
total = toto1 + toto2
MsgBox total
If total > "23:59:59" Then
total = "24" - total
MsgBox total
End If
End Sub
<hr />
j'ai un soucis car lorsque l'heure que l'on rajoute dépace 24H ca m'inscrit un truc du style 31/12/1899 07:53:03.
d'ou peu venir ce problème?
merci d'avance
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
une simple concaténation de string n'est pas une date valide.

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
Salut,

de toute façon les heures à partir de 24 heures sont transformées en jour et tu te retrouves avec une Date farfelue

pour avoir le total des heures il faut retransformer les jours en heures,

et ne jamais utiliser directement l'édition de la Date,,

mais utiliser le Fonctions Hours(), Minute(), Second()

    MsgBox Hour(total) + Int(total) * 24

Daniel
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Ajouter deux dates ? utiliser DateAdd....

pas de soucis, si on ajoute un temps à une date :

?  #07/03/2006 23:58:41# + #00:02:27#
04/07/2006 00:01:08

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

je vous remercie beaucoup pour vos réponse.
vos message m'on fait réfléchir, je prend maintenant la date du jour avec l'heure:


<hr />
Dim toto1 As Date, toto2 As Date, total As Date
Private Sub Command1_Click()If Text1.Text "" Then Text1.Text "00"If Text2.Text "" Then Text2.Text "00"If Text3.Text "" Then Text3.Text "00"


toto1 = Now()
toto2 = Text1.Text & ":" & Text2.Text & ":" & Text3.Text
total = toto1 + toto2


MsgBox "le pc s'éteindra a " & total
Timer1.Enabled = True
End Sub


<hr />Mais j'ai une erreur dés que je veux ajouter 24H ou plus j'ai une erreur au niveau de toto2=
cela viens de ma déclaration de la variable toto2 As Date, mais je ne sais pas par quoi modifier pour qu'il n'y ai plus d'erreur.
vou savez une idée
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

j'ai oublier de précisé que Text1, Text2 et Text3 corresponde a l'heure, minute et seconde.
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

ca marche super comme ca, serait tu m'expliquer d'ou venez mon erreur, juste pour essayer de les comprendre :)

sinon  TimeSerial(heure, minute et seconde) créé une valeur variant de type Date?
si c'est le cas pourquoi ma technique ne marché pas?
je dois etre chiant quand meme :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Ca fonctionne, si, dans ce cas.... mais là, VB doit transformer ta
chaine en date, ce qui es couteux, et qui peux ne pas fonctionner,
j'imagine ,selon les options regionales.


TimeSerial permet de travailler avec des valeurs numériques, ce qui
induit un traitement plus rapide, et qui enlève toute éventuelle
incompatibilité avec les paramètres régionnaux.


comme te l'as dit PCPT :

"une simple concaténation de string n'est pas (forcément) une date valide."

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
211
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
18 octobre 2010

a d'accord, merci beaucoup de votre aide a tous.
mon programme marche impec maitnenant :)