problème VBA formats

mikepers

XLDnaute Occasionnel
Bonjour forum!

Encore une fois, tout mon travail arrêté à cause probablement d'une mauvaise interprétation des formats!!!!
ya beau dire, c'est quand même pas simple la relation VBA/formats de dates et heures...
je désire récupérer dans un USF des données qui proviennent d'une feuille. Donc un simple textbox qui doit me renvoyer un calcul de total d'heures travaillées.
Sur le worksheets("JANVIER"), le total en ("C37") est formaté [hh]:mm et m'affiche 130:00
( 130 heures travaillées ).
Passons à l'USF :
j'ai mis en:
----------------------------------------------------

Private Sub UserForm_Initialize()

UserForm2.TextBox5.Value = Sheets("JANVIER").Range("C37").Value

End Sub
____________________________________________________
PUIS dans le textbox en question:
____________________________________________________
Private Sub TextBox5_Change()

UserForm2.TextBox5.Value = Format(UserForm2.TextBox5.Value, "hh:mm")

End Sub
----------------------------------------------------
rien à faire, le retour dansl'USF m'affiche un résultat mal formaté
( du style 10:00 - ou alors 5,416666667 )

je ne comprend pas !!Si quelqu'un voit d'ou ca vient....
Merci par avance.
 

pierrejean

XLDnaute Barbatruc
Re : problème VBA formats

bonjour mikepers

D'ou ça vient : mystère pour moi

une solution:

Code:
Private Sub UserForm_Initialize()
h = Int(Sheets("JANVIER").Range("C37").Value* 24)
m = Format(Round((Sheets("JANVIER").Range("C37").Value* 24 - h) * 60), "00")
TextBox1 = h & ":" & m
End Sub
 

mikepers

XLDnaute Occasionnel
Re : problème VBA formats

bravo pierrejean ! joli code... ( que j'ai du mal à interpréter )
mais visiblement j'ai bien le bon format en retour !!
encore merci, j'ai de quoi étudier ce soir au boulot !!
dois je insérer la totalité de ton code pour chaque textbox ???

cordialement
 

pierrejean

XLDnaute Barbatruc
Re : problème VBA formats

Re

Explication
Le .value est exprimé en jours
pour l'avoir en heures il faut *24
les heures sont donc la part entière (Int())
les minutes sont (les heures - la part entiere des heures)*60
on arrondit puisque les secondes ne sont pas affichées
et on affiche

Edit: Bravo Pierrot :) et merci
 

mikepers

XLDnaute Occasionnel
Re : problème VBA formats

merci à vous deux, j'ai réussi à terminer mon fichier hier soir. J'ai opté pour le code de Pierrot93 qui était plus court.
J'ai quand même essayé de tester le code de pierreJean, mais celui ci n'a fonctionné que sur un seul textbox dans l'USF. Mais comme je devais uploader le fichier sur le serveur au boulot je n'ai pas eu le temps d'approfondir. Je garde le code au chaud...

Un grand merci à vous deux
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16