Signaler

Comment faire un calcul avec une concaténation ? [Résolu]

Posez votre question coupidon 92Messages postés mardi 3 janvier 2006Date d'inscription 13 septembre 2016 Dernière intervention - Dernière réponse le 13 sept. 2016 à 13:30
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
Afficher la suite 
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
Je croyais que ta question était résolue : http://www.commentcamarche.net/forum/affich-33890246-comment-concatener-plusieurs-textbox
Ajouter un commentaire
Utile
+0
moins plus
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+
Ajouter un commentaire
Utile
+0
moins plus
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 ?
Ajouter un commentaire
Utile
+0
moins plus
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+
coupidon 92Messages postés mardi 3 janvier 2006Date d'inscription 13 septembre 2016 Dernière intervention - 12 sept. 2016 à 18:48
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
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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+
coupidon 92Messages postés mardi 3 janvier 2006Date d'inscription 13 septembre 2016 Dernière intervention - 13 sept. 2016 à 13:30
Génial c'est exactement ce que je recherchais, grand merci pour ton aide.
cela semble tellement simple comme ça...
impeccable
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !