Heure dans une textbox

Résolu
Bonjour,

Me revoila avec un nouveau probleme que je n'arrive pas a resoudre:

je fais un calcul de somme d'heures dans une cellue. Pour m'afficher correctement la somme totale des heures je fais un format de cellule de type personnalisé et [H]:mm:ss. Jusque la aucun souci mais lorsque je veux faire afficher cette heure dans une textbox, le format est respecté mais au lieu de m'afficher la somme totale qui est de 28:34:08 il m'affiche 04:34:08.

voici le prog:

Sub statmensuelle()

Dim wbk1 As Workbook
Dim mois, annee As String

Set wbk1 = ThisWorkbook

mois = UserForm2.ComboBox1.Value
annee = UserForm2.ComboBox2.Value

Sheets(annee).Activate

If mois = "01" Then
UserForm2.TextBox3.Value = Sheets(annee).Range("FT24").Value
UserForm2.TextBox3.Value = Format(Sheets(annee).Range("FT24"), "HH:mm:ss")
end if

end sub

merci d'avance pour les reponses qui vont venir
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    il faut mettre le format que tu désires :
    UserForm2.TextBox3.Value = Format(Sheets(annee).Range("FT24"), "[H]:mm:ss")
    eric
    1. Salut eric merci de me repondre

      en suivant tes conseils, si je mets [H] pour la forme de date alors , dans la textbox, l'heure s'affiche de la manière suivante:

      :12:54

      les heures ne s'affichent pas et les minutes et secondes ne correspondes pas aux valeurs dans la cellule de copie

      merci pour ce debut de reponse
  2. déjà essaie de mettre un .value et où se trouve ton addition de date ?

    [code]
    If mois = "01" Then
    UserForm2.TextBox3.Value = Sheets(annee).Range("FT24").Value
    UserForm2.TextBox3.Value = Format(Sheets(annee).Range("FT24").value, "HH:mm:ss")
    end if
    [_code]

    A plus
    1. mikebzh,

      merci de me repondre , le fait de mettre une .value pour la cellule ne change pas le probleme, il est toujours ecrit 04:39:54

      dans l'attente d'une autre solution
      merci
    2. toujours pas de solution

      l'addition d'heures se fait dans une cellule du classeur excel dans la cellule elle meme je n'est pas fais de macro je fais simplement une macro pour copier la valeur dans la textbox
      merci de me repondre je suis vraiment embeter

      up pliz
  3. C'est vraiment hallucinant cette histoire, j'ai essayé pas mal de truc sans résultat ????
    Alors je suis reparti sur les bases, après tout, on n'a qu'à faire l'addition nous mêmes et en plus ça fonctionne !
    Voici un petit code, j'ai mis les deux dates dans les cellules A1 & A2 et créer une fonction d'addition qui retourne une chaine de caractère pour la textbox.

    [code]
    Private Function addheures(t1 As Date, t2 As Date) As String
    Dim h, m, s As Integer 'heures, minutes, secondes
    Dim supm, suph As Integer 'suppléments minutes & heures
    supm = 0
    suph = 0
    s = Second(t1) + Second(t2)
    If s >= 60 Then
    supm = Int(s / 60)
    s = s - 60 * supm
    End If
    m = Minute(t1) + Minute(t2) + supm
    If m >= 60 Then
    suph = Int(m / 60)
    m = m - 60 * suph
    End If
    h = Hour(t1) + Hour(t2) + suph
    addheures = h & ":" & m & ":" & s
    End Function

    Private Sub Boutonadd_Click()
    TextBox1.Text = addheures(Range("A1").Value, Range("A2").Value)
    End Sub
    [\code]

    le boutonadd est un bouton que j'ai créé juste pour l'appli après la fonction peut servir n'importe où ?

    A plus, mais c'est quand même délirant de ne pas pouvoir copier ce fichu résultat, si quelqu'un à l'info ça m'intéresse.
    1. merci encore pour cette reponse

      tres interressant le programme, toutefois, le calcul se fait avec deux heures en A1 et A2
      Dans mon cas, j'ai une plage d'heures allant de J19 a J50 alors je ne sais pas comment utiliser la fonction pour une plage d'heures
      est ce que tu peux me donner un coup de main ça serait super cool ?

      merci encore pour cette fonction
      1. petite mise a jour

        ton programme marche parfaitement puisqu'il me donne les heures ,minute et secondes mais le resultat dans la textbox ne correspond pas au resultat de la cellule ou une somme d'heures est effectuée

        j'ai fais un test avec ton programme

        Dans le classeur, a la cellule FT35 j'ai: =somme(X19:X49)
        Ce qui me donne une valeur sous forme d'heure de 33:23:00

        J'utilise ton programme, je pointe la cellule FT35 pour avoir la valeur et la cellule A1 qui ne contient rien
        Je lance mon programme et j'obtiens: 9:23:00

        Alors le probleme je comprens pas grand chose
        une solution peut etre
    2. Contributeur
      Bonsoir,

      voici une fonction pour te refabriquer ce que excel a du mal à faire :
      Function strH(temps As Double) As String
          Dim h As Long, m As Long, s As Long
          h = Int(temps) * 24
          temps = (temps - Int(temps)) * 24
          h = h + Int(temps)
          temps = (temps - Int(temps)) * 60
          m = Int(temps)
          s = Int((temps - Int(temps)) * 60)
          strH = Right("00" & h, 2) & ":" & Right("00" & m, 2) & ":" & Right("00" & s, 2)
      End Function
      Tu lui passes un temps (numérique) en paramètre, il te retourne ce temps sous forme de chaine de caractère.
      A copier dans un module.

      Pour tester saisis un temps en A1 et lance cette macro :
      Sub test()
          MsgBox (strH([A1]))
      End Sub

      eric
      1. Je t'avais donné un code vite fait pour l'addition de deux dates < 24 heures, pour ce que tu veux faire le code de erric est impeccable. Bravo Erric
        Attention il perd une seconde à chaque addition, tu as juste à l'ajouter en ligne des secondes

        [code]
        s = Int((temps - Int(temps)) * 60)+1
        [\code]

        Salut
        1. Contributeur
          ?
          Je ne comprend pas ton problème d'addition...
          L'addition est à faire en numérique et c'est le résultat qu'il faut convertir en chaine. Il n'y a pas de seconde à ajouter...
          eric
      2. Je parle de ta variable s qui elle est numérique et qui en perd une petite à chaque mise en forme (excuses moi, la perte n'est pas à l'addition mais à la conversion)
        A plus
        1. Contributeur
          Ah ok.
          C'est parce par un excès de prudence j'avais fait le choix d'afficher des secondes entières avec
          s = Int((temps - Int(temps)) * 60)
          que l'on remplace par
          s = (temps - Int(temps)) * 60


          C'est vrai que sur un temps obtenu par plusieurs opération on pouvait perdre 1 s.
          Merci de la remarque

          eric