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
Dernière intervention
27 février 2009
- 24 févr. 2009 à 14:34 - Dernière réponse : nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
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
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 25 févr. 2009 à 09:23
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Renfield
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 24 févr. 2009 à 15:44
0
Merci
allez, je te le donne pas en tout-cuit (je fais ce que je veux^^)

tu obtiens un nombre de secondes...
Commenter la réponse de Renfield
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 24 févr. 2009 à 16:32
0
Merci
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...
Commenter la réponse de nasilo
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 24 févr. 2009 à 16:40
0
Merci
?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.
Commenter la réponse de Renfield
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 24 févr. 2009 à 16:42
0
Merci
? (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
Commenter la réponse de Renfield
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 25 févr. 2009 à 09:11
0
Merci
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.
Commenter la réponse de nasilo
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 26 févr. 2009 à 09:55
0
Merci
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.
Commenter la réponse de nasilo
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 26 févr. 2009 à 10:06
0
Merci
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 ^^
Commenter la réponse de Renfield
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 26 févr. 2009 à 10:13
0
Merci
Re bonjour,

D'accord, je n'avais pas saisi oupssssssssssssss
Merci beaucoup je vais corriger et continuer donc à apprendre.
Commenter la réponse de nasilo
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 26 févr. 2009 à 10:30
0
Merci
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....
Commenter la réponse de nasilo
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 26 févr. 2009 à 10:36
0
Merci
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....
Commenter la réponse de nasilo
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 26 févr. 2009 à 10:37
0
Merci
a voir le format de cellule utilisé.

tout est question de représentation graphique d'une valeur donnée
Commenter la réponse de Renfield
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 26 févr. 2009 à 10:51
0
Merci
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.
Commenter la réponse de nasilo
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 27 févr. 2009 à 10:15
0
Merci
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
Commenter la réponse de nasilo
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 27 févr. 2009 à 10:28
0
Merci
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")
Commenter la réponse de Renfield
nasilo
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Dernière intervention
27 février 2009
- 27 févr. 2009 à 15:33
0
Merci
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
Commenter la réponse de nasilo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.