Heure dans une textbox

Résolu
mister-t -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    il faut mettre le format que tu désires :
    UserForm2.TextBox3.Value = Format(Sheets(annee).Range("FT24"), "[H]:mm:ss")
    eric
    0
    1. mister-t
       
      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
      0
  2. mikebzh Messages postés 135 Statut Membre 28
     
    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
    0
    1. mister-t
       
      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
      0
    2. mister-t
       
      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
      0
  3. mikebzh Messages postés 135 Statut Membre 28
     
    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.
    0
  4. mister-t
     
    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
    0
    1. mister-t
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mister-t
     
    up please please please oh please
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  8. mikebzh Messages postés 135 Statut Membre 28
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ?
      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
      0
  9. mikebzh Messages postés 135 Statut Membre 28
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0