Heure dans une textbox

Résolu
mister-t -  
eriiic Messages postés 24603 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
A voir également:

8 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

il faut mettre le format que tu désires :
UserForm2.TextBox3.Value = Format(Sheets(annee).Range("FT24"), "[H]:mm:ss")
eric
0
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
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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
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
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
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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
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
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

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

Posez votre question
mister-t
 
up please please please oh please
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
?
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
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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