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

6 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  2. 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
  3. 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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
    1. 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
  6. 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
    1. 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