Comment faire un calcul avec une concaténation ?

Résolu
coupidon Messages postés 98 Statut Membre -  
coupidon Messages postés 98 Statut Membre -
Bonjour,

Je débute en VBA, j'aimerais savoir comment on fait pour qu'une concaténation puisse être utilisé dans un calcul d'heure ?
j'ai ceci pour ma concaténation :

Private Sub TextBox10_AfterUpdate()
' Je défini une variable aléatoire comme H pour concatener les heures
Dim H As String
H = TextBox8.Value & ":" & TextBox9.Value & ":" & TextBox10.Value
TextBox16.Value = H
End Sub

je souhaiterais utiliser cette variable pour additionner l'heure en court avec now() par exemple et ma variable concatener, je sais pas comment m'y prendre en faite...
et que cette valeur puisse se retrouver dans mon textbox16 pour le résultat.
à savoir que sur le textbox8 je saisi les heures, textbox9 les minutes et textbox10 les secondes.
et que le textbox16 est la résultante du calcul de l'heure en court + les saisis.

merci de vos conseils et aides
A voir également:

6 réponses

Patrice33740 Messages postés 8930 Statut Membre 1 781
 
Bonjour,

Exemple :
Sub x()
Dim H As String
Dim T As Date
  H = "10:12:59"
  T = CDate(H) + Now
  H = T
  MsgBox H
End Sub
0
Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
0
Gyrus Messages postés 3360 Statut Membre 526
 
Bonjour,

Tu peux utiliser le code suivant :
Private Sub TextBox10_AfterUpdate()
Dim H As Date
H = TimeSerial(TextBox8.Value, TextBox9.Value, TextBox10.Value)
TextBox16.Value = Format(Time + H, "hh:mm:ss")
End Sub

A+
0
coupidon Messages postés 98 Statut Membre 1
 
Bonjour,

pour ton code cela semble marché sauf un petit beug avec seconde, aurais tu une solution à ce problème

je te donne un exemple : si je saisi avec l'heures de saisi qui est

15:58:48

' heures textbox8 =02
' Minutes textbox9 =02
' Secondes textbox10 =02

sur ma textbox16 j'ai comme résultat :
18:00:54

alors que le résultat attendu serais :
18:00:50

je me l'explique pas ?
0

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

Posez votre question
Gyrus Messages postés 3360 Statut Membre 526
 
Bonjour,

Tu constates donc un écart de 4 secondes, mais par rapport à quelle référence (heure de saisie) ?
Le programme prend en compte l’heure système donnée par la fonction Time au moment où la donnée du TextBox10 a été mise à jour.

Pour t'en convaincre, tu peux ajouter une TextBox afin d'afficher cette heure système.

Exemple avec l'heure système dans la TextBox17 :
Private Sub TextBox10_AfterUpdate()
Dim H As Date
H = TimeSerial(TextBox8.Value, TextBox9.Value, TextBox10.Value)
TextBox16.Value = Format(Time + H, "hh:mm:ss")
TextBox17.Value = Format(Time, "hh:mm:ss")
End Sub


A+
0
coupidon Messages postés 98 Statut Membre 1
 
D'accord je saisi le soucis que j'ai du coup,

alors je vous explique lors de l'affichage de mon userform, j'ai un texbox1 qui utilise comme code ceci :
Private Sub UserForm_Initialize()

' Affiche la date et heure du jour
' sous le format ex: mercredi 10 juin 2016 10:25:36

TextBox1.Value = Format(Now, "dddddd hh:mm:ss")

du coup quand je fais la saisi avec les textbox8 à 10
et que le moment de la saisi peu se faire quelques secondes plustard cela provoque mon beug, qui n'en est pas un.

alors comment je peu utiliser ma valeur de la textbox1 pour remplacer la fonction Time dans ta ligne de code.... ? pour que l'heure coïncide avec la valeur de la textbox1

merci
0
Gyrus Messages postés 3360 Statut Membre 526
 
Essaie comme cela
Dim T As Double

Private Sub UserForm_Initialize()
Dim D As Date
D = Now
T = D - Int(D)
TextBox1.Value = Format(D, "dddddd hh:mm:ss")
End Sub

Private Sub TextBox10_AfterUpdate()
Dim H As Date
H = TimeSerial(TextBox8.Value, TextBox9.Value, TextBox10.Value)
TextBox16.Value = Format(T + H, "hh:mm:ss")
End Sub

A+
0
coupidon Messages postés 98 Statut Membre 1
 
Génial c'est exactement ce que je recherchais, grand merci pour ton aide.
cela semble tellement simple comme ça...
impeccable
0