Faire des calculs avec des heures dans des textbox (excel 2003 - VBA)

Résolu
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009 - 24 févr. 2009 à 14:34
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009 - 27 févr. 2009 à 15:33
Rebonjour,
encore moi...
Je cherche à faire des  calculs avec des heures dans des textboxs... Je n'arrive pas à trouver la méthode pour le faire. Je n'ai trouvé aucun cas vraiment "concret" sur le sujet. Je saisi des heures dans des textbox sous la forme 16:00 et lorsque je fais faire le calcul dans le textbox résultat j'ai un chiffre décimal qui apparait et je n'arrive pas à trouver la méthode pour que celui-ci s'affiche en heure et non pas en décimales...
voici ma déclaration en tête de procédure :
Dim H1 As Date
Dim H2 As Date
H1 = CDate(TextBox_heure_début.Value)
H2 = CDate(TextBox_heure_fin.Value)
TextBox_heure_totale.Value = (H2-H1)
Dans les deux textbox je saisi l'heure manuellement sous la forme 10:00
 j'ai même essayé dans le textbox résultat à l'évenement change d'attribuer un format heure sous la forme
textbox_heure_totale = format("hh:mm") Mais cela ne fonctionne pas. Qui voudra bien me mettre sur de bon rails...
Merci

16 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 févr. 2009 à 09:23
Dim nTime As Double
Dim nHour As Long
Dim nMinutes As Long
Dim nSeconds As Long
If IsDate(TextBox_heure_début) And IsDate(TextBox_heure_fin.Value) Then
nTime = (CDbl(CDate(TextBox_heure_fin.Value)) - CDbl(CDate(TextBox_heure_début.Value))) * 1440
'# nTime = (CDbl(CDate("09:19:16")) - CDbl(CDate("03:03:03"))) * 1440

nHour = nTime \ 60
nMinutes = Fix(nTime) Mod 60
nSeconds = (nTime - (nHour * 60 + nMinutes)) * 60

'# MsgBox TimeSerial(nHour, nMinutes, nSeconds)
TextBox_heure_totale.Value = TimeSerial(nHour, nMinutes, nSeconds)
End If
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 15:44
allez, je te le donne pas en tout-cuit (je fais ce que je veux^^)

tu obtiens un nombre de secondes...
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
24 févr. 2009 à 16:32
Bonjour,
Tu as de la chance, tu fais ce que tu veux ...moi je fais ce que je peux et pour le moment je fais peu, voire même très peu. J'essaie de compliquer chaque jour un peu plus mon application perso, mais beaucoup de me ralentissent... pas grave je suis à présent à la retrraite et j'ai donc du temps....
Je continue de chercher...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 16:40
?cdbl(cdate("16:36"))
0,691666666666667

?cdbl(cdate("12:00"))
0,5

1 vaut donc une journée.

le décimal que tu obtiens est une portion de journée.
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 16:42
? (cdate("16:36") - cdate("12:00")) * 24 * 60
276

? 276 \ 60
4
on a extraie 4 => le nombre d'heures "pleines"

? 276 mod 60
36
mes minutes...


avec d'autres valeurs:
? (cdate("16:36") - cdate("12:12")) * 24 * 60
264
? 264 mod 60
24
? 264 \ 60
4
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
25 févr. 2009 à 09:11
Bonjour,
Désolé, je comprends ce que tu m'expliques mais je ne n'arrive pas à l'appliquer dans une procédure pour que dans mes textbox apparaissent non pas le chiffre avec où sans décimale mais en format heure, minute, seconde.
Tant pis ce n'est pas grave. Je vais continuer à saisir mes heures directement dans mes feuilles excel de mon projet budget au lieu d'utiliser des formulaires userform que j'arrive à présent à faire pour remplir les autres renseignements.
Merci et bonne  journée.
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 09:55
Bonjour,
Je reprends ce matin....et j'essaye de comprendre les lignes de code...
compliqué, super compliqué, trop pour moi .....
J'ai copié le code mais il "bug" sur la deuxième ligne de n time précédé dans ton exemple '#  avec ' il prend la ligne comme commentaire (cela est normal) et si je le supprime il me met erreur de syntaxe....
J'essaie de trouver d'où vient le problème mais mes connaissances plus que naissantes ne me permettent pas de résoudre le problème trop complexe pour moi. Je m'aperçois que travailler avec des formats numériques ou horaire et date et très compliqué avec VBA, puisque dans les textbox, au "départ" tout est interpreté comme des lettres ...
Merci beaucoup de cette aide qui m'est réellement indispensble et bonne journée.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 févr. 2009 à 10:06
j'ai développé ce code en utilisant des heures fixes (il s'agit de la ligne en commentaires)

d'après le code que tu as posté plus haut, j'ai maché l'intégration des controles dans le calcul de nTime (il s'agit du décimal que tu obtiens)

'# marque le début du commentaire
j'ai simplement pris l'habitude d'ajouter un # derrière le '
mais ca ne change rien ^^
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 10:13
Re bonjour,

D'accord, je n'avais pas saisi oupssssssssssssss
Merci beaucoup je vais corriger et continuer donc à apprendre.
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 10:30
encore moi...
Je viens de procéder à l'essai du code...
A l'appel du formulaire dans la case heure total j'ai bien un affichage horaire de la forme 00:00 qui s'affiche et lorsque je rentre des heures dans les deux textbox debut et fin et que je lance le calcul le message box m'affiche bien la différence mais dans le textbox total, j'ai toujours l'affichage en chiffre décimal qui correspond bien sur à l'heure... ?
désolé de t'accaparer ainsi....
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 10:36
Resalut,
Youpi ça marche....
je viens de trouver mon erreur et (pas la tienne )
Dans la suite de ma procédure je n'avais pas corrigé l'appel de la cellule de ma feuille total heure dont je renvoyais la valeur dans le textbox total de mon userform....
En fait donc je remarque que si je veux par contre copier de la cellule de ma feuille l'heure et l'afficher dans mon textbox de l'userform le chiffre qui s'inscrit est dans ce cas le chiffre décimal je pense que cela est normal ...??? même avec le code que tu m'as communiqué en avant de la procédure
Merci encore et encore....
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 févr. 2009 à 10:37
a voir le format de cellule utilisé.

tout est question de représentation graphique d'une valeur donnée
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
26 févr. 2009 à 10:51
Je vais continuer a essayer de comprendre VBA et surtout ces opérations numériques.... Le chemin va être long et parsemé d'embuches (rires); mais bon c'est interessant.
En tout cas merci beaucoup pour cet aide sans laquelle je ne serai jamais parvenu à utiliser mes textbox avec des heures.
Bonne journée.
D'autres questions suivront.
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
27 févr. 2009 à 10:15
Rebonjour,

Je peux à présent gràce a cette aide précieuse faire des calculs avec des heures dans des textbox. A present j'essaie de faire afficher l'heure d'une cellule excel 2003 vers un textbox. L'heure dans le textbox s'affiche bien sur en décimal. J'ai donc essayé la synthaxe suivante pour que cette valeur décimale se transforme en heure, minutes et seconde :
If IsDate(TextBox_durée_exercice) Then
nTime = (CDbl(CDate(TextBox_durée_exercice.Value))) * 1440
nHour = nTime \ 60
nMinutes = Fix(nTime) Mod 60
nSeconds = (nTime - (nHour * 60 + nMinutes)) * 60
TextBox_durée_exercice.Value = TimeSerial(nHour, nMinutes, nSeconds)
End If
ce code je l'ai placé dans la procédure du bouton enregistre....
et dans userform.initialize j'ai mis
textbox_durée_exercice = Format (Date, "hh:mm:ss"). A l'ouverture de mon userform il y a bien 00:00:00 dans le textbox durée mais quand j'enregistre mes calculs et que je vais chercher dans une feuille excel l'heure affichée, cette heure m'est retournée en format décimal. Où l'erreur est-elle commise ?
Je pense que mon erreur émane du fait que je dis if ..textbox..isdate alors que c'est un nombre décimal qui y est inscrit...et je ne trouve pas comment résoudre ce problème
Je commence je sais à être casse-pied. Excusez moi
Merci et bonne journée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 févr. 2009 à 10:28
textbox_durée_exercice = Format (Date, "hh:mm:ss")

gaffe, date renvoie... la date... enfin, sans l'heure

utilises Now :

textbox_durée_exercice = Format (Now, "hh:mm:ss")
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
27 févr. 2009 à 15:33
Rebonjour

je viens de trouver mon erreur concerna tle non affichage au format heure dan dsma textbox...
J'avais écrit dans ma procédure :
textbox_duréee_exervice.value = Range("C5").value au lieu de range("C5").text...
Je vais aller prendre l'air un peu...
merci pour toute l'aide...
bonne après-midi
0
Rejoignez-nous