Calcul d heure avec dtpicker

ocejade
Messages postés
55
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
6 avril 2015
- 11 mars 2012 à 09:19
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
- 22 mars 2012 à 21:39
bonjour a tous

je viens ver vous car j ais un problème de calcul d heure avec des dtpiker

je m explique

j ais deux dtpiker un qui m affiche mes heures travailler du jour et l autre qui me fait un calcul du mois l opération ce fait parfaitement mais des que je dépasse 23 h 59 le dtpiker deux se remet a zéro je ne c est pas comment forcer le dtpiker a accepter les heures supérieure a 24 h 00 ?

ma ligne de code est

dtpiker1.value= dtpiker1.value + dtpiker2.value en sachant que dtpiker1 est charger a l ouverture du programme


MERCI A VOUS POUR VOS FUTUR REPONCE ET A BIENTÔT

11 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
11 mars 2012 à 09:38
Bonjour,
1) Tu as là un problème fondamental de conception.
Un contrôle dtpicker n'est pas fait pour stocker une valeur de date, mais pour sélectionner une date avec confort. Il n'est jamais nécessaire d'utiliser plus d'un contrôle de cette nature !

2) on ne traite pas les heures (temps) comme des durées (ce sont des notions distinctes).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
12 mars 2012 à 21:42
Bonjour ocejade,

Donc
T1 = temps au départ
T2 = temps à l'arrivée
Temps : T = T2 - T1

Nota bene, il faut simplement mémoriser la valeur T1 (variable, fichier), jusqu'au moment où on prend T2 pour calculer T.

Cordialement, Joe.
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
12 mars 2012 à 22:40
Oui ! mais à condition d'en extraire des durées (exprimées en unités de temps) et non des "heures" (qui ne sont que l'expression d'un écart par rapport à une origine ... un "relevé", quoi, même s'il s'exprime avec les même mots "heures", "minutes" et "secondes" que les durées).
On peut faire des opérations sur des durées. On ne saurait en faire sur des "heures".


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
13 mars 2012 à 09:52
Bonjour Jacques,

En fait il y a tout ce qu'il faut pour calculer ça, on peut aussi directement calculer en valeur "Long" :

dim d1 as date = "12/03/2012 22:57:17"
dim d2 as date = "13/03/2012 09:57:17"
dim ss as long = 0
dim mn as long = 0
dim hh as long = 0
ss = DateDiff(DateInterval.second, d1, d2)
' il y a peut être plus court ?
if ss > 0 then 
  mn = ss \ 60
  ss = ss - (mn * 60)
end if
if mn > 0 then 
  hh = mn \ 60
  mn = mn - (hh * 60)
end if
msgbox(hh & "h" & format(mn,"00") & "'" & format(ss,"00"))


Cordialement, Joe.
0

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

Posez votre question
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
13 mars 2012 à 12:14
Salut ocejade


Explique ce que tu veux faire... pas ce que tu
as fait

pas compris ton explication

j ais deux dtpiker un qui m affiche mes heures travailler du jour

comment ?
le dtpiker est un control qui te permet de choisir une date en définassant le format voulu
tu cliques le dtpicker au début de la journée
sauvegarde la valeur dans un tableau
tu cliques le dtpicker à la fin de la journée
sauvegarde la valeur dans un tableau
c'est tout
je ne c est pas comment forcer le dtpiker a accepter les heures supérieure a 24 h 00 ?


soi logique une journée dure 24 heures

comme si que je disais comment forcer le calendrier après le 31 janvier obtenir le 32 janvier
0
ocejade
Messages postés
55
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
6 avril 2015

14 mars 2012 à 20:25
bonjour a tous

je vois que mon problème vous met en désaccord
mais l union fait la force

je vous met l ensemble de mon code pour que vous puissiez mieux comprendre

Private Sub AJOUT_Click()
Dim I As Integer
I = Row + 2
MSFlexGrid1.AddItem Calendar1, 2
MSFlexGrid1.TextMatrix(I, 1) = DTPicker1.Value
MSFlexGrid1.TextMatrix(I, 2) = DTPicker2.Value
MSFlexGrid1.TextMatrix(I, 3) = DTPicker3.Value
MSFlexGrid1.TextMatrix(I, 4) = DTPicker4.Value
MSFlexGrid1.TextMatrix(I, 5) = DTPicker8.Value
MSFlexGrid1.TextMatrix(I, 6) = Text2.Text
DTPicker9.Value = DTPicker3.Value + DTPicker9.Value 'le probleme se situe au dtpicker9 qui se remet a zero si le total depasse 23 h 59
DTPicker10.Value = DTPicker4.Value + DTPicker10.Value
DTPicker11.Value = DTPicker8.Value + DTPicker11.Value
End Sub

Private Sub CALCULJ_Click()
DTPicker14.Value = DTPicker6.Value + DTPicker7.Value - DTPicker12.Value
If DTPicker2.Value < DTPicker13.Value Then DTPicker15.Value = DTPicker2.Value
If DTPicker13.Value < DTPicker2.Value Then DTPicker15.Value = DTPicker13.Value
If DTPicker12.Value < DTPicker1.Value Then DTPicker8.Value = DTPicker6.Value + DTPicker7.Value - DTPicker1.Value + DTPicker15.Value
If DTPicker1.Value < DTPicker12.Value Then DTPicker8.Value = DTPicker14.Value + DTPicker15.Value

DTPicker3.Value = DTPicker6.Value + DTPicker7.Value - DTPicker1.Value + DTPicker2.Value
DTPicker4.Value = DTPicker5.Value - DTPicker3.Value


End Sub

Private Sub CALCULN_Click()
DTPicker3.Value = DTPicker2.Value - DTPicker1.Value
DTPicker4.Value = DTPicker5.Value - DTPicker3.Value
DTPicker15.Value = DTPicker13.Value - DTPicker1.Value
If DTPicker1.Value < DTPicker13.Value Then DTPicker8.Value = DTPicker15.Value

End Sub




Private Sub effacel_Click()

MSFlexGrid1.Clear
MSFlexGrid1.Rows = 2
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
With MSFlexGrid1
.MergeCells = 1
MSFlexGrid1.MergeRow(1) = True
.Rows = 2
.Cols = 7
.MergeCells = 0
.MergeRow(0) = True
.ColWidth(0) = 1100
.ColWidth(1) = 1100
.ColWidth(2) = 1100
.ColWidth(3) = 1100
.ColWidth(4) = 1100
.ColWidth(5) = 1100
.ColWidth(6) = 1100
.TabStop = False

.TextMatrix(0, 0) = "date "
.TextMatrix(0, 1) = "heure embauche "
.TextMatrix(0, 2) = "fin de service "
.TextMatrix(0, 3) = "total jour "
.TextMatrix(0, 4) = "heure supp "
.TextMatrix(0, 5) = "heure nuit "
.TextMatrix(0, 6) = "information "
End With
End Sub

Private Sub EFFACETM_Click()
DTPicker9.Value = "00:00:00"
DTPicker10.Value = "00:00:00"
DTPicker11.Value = "00:00:00"
End Sub

Private Sub EMPLOYER_Click()
Form1.Show
End Sub

Private Sub EMPLOYEUR_Click()
Form4.Show
End Sub

Private Sub Form_Load()
DTPicker1.Value = "00:00:00"
DTPicker2.Value = "00:00:00"
DTPicker3.Value = "00:00:00"
DTPicker4.Value = "00:00:00"
DTPicker5.Value = "06:30:00"
DTPicker10.Value = "00:00:00"
DTPicker8.Value = "00:00:00"
With MSFlexGrid1
.MergeCells = 1
MSFlexGrid1.MergeRow(1) = True
.Rows = 2
.Cols = 7
.MergeCells = 0
.MergeRow(0) = True
.ColWidth(0) = 1100
.ColWidth(1) = 1400
.ColWidth(2) = 1100
.ColWidth(3) = 1100
.ColWidth(4) = 1100
.ColWidth(5) = 1100
.ColWidth(6) = 1100
.TabStop = False

.TextMatrix(0, 0) = "date "
.TextMatrix(0, 1) = "heure embauche "
.TextMatrix(0, 2) = "fin de service "
.TextMatrix(0, 3) = "total jour "
.TextMatrix(0, 4) = "heure supp "
.TextMatrix(0, 5) = "heure de nuit"
.TextMatrix(0, 6) = "information "
End With
Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
Dim file_name As String
Dim fnum As Integer
Dim max_row As Integer
Dim max_col As Integer
Dim R As Integer
Dim c As Integer
Dim TXT As String
Dim max_len As Single
Dim new_len As Single

file_name = App.Path
If Right$(file_name, 1) <> "" Then file_name = file_name & ""
file_name = file_name & "FlexGrid1.dat"

fnum = FreeFile
Open file_name For Input As fnum


MSFlexGrid1.Visible = False
DoEvents


Input #fnum, max_row, max_col

MSFlexGrid1.FixedCols = 1
MSFlexGrid1.Cols = max_col + 1
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.Rows = max_row + 1


For R = 0 To max_row
For c = 0 To max_col
Input #fnum, TXT
MSFlexGrid1.TextMatrix(R, c) = TXT
Next c
Input #fnum, TXT
Next R

Close #fnum
Font.Name = MSFlexGrid1.Font.Name
Font.Size = MSFlexGrid1.Font.Size
For c = 0 To max_col
max_len = 0
For R = 0 To max_row
new_len = TextWidth(MSFlexGrid1.TextMatrix(R, c))
If max_len < new_len Then max_len = new_len
Next R
MSFlexGrid1.ColWidth(c) = max_len + 710
MSFlexGrid1.ColAlignment(c) = flexAlignLeftCenter
Next c
MSFlexGrid1.Visible = True
Open App.Path & "\1.txt" For Input As #1
DTPicker9.Value = Input(LOF(1), #1)

Close #1
Open App.Path & "\2.txt" For Input As #1
DTPicker10.Value = Input(LOF(1), #1)

Close #1
Open App.Path & "\3.txt" For Input As #1
DTPicker11.Value = Input(LOF(1), #1)

Close #1
Open App.Path & "\6.txt" For Input As #1
Text1.Text = Input(LOF(1), #1)

Close #1

End Sub



Private Sub MISE_Click()
Form2.Show
End Sub

Private Sub Option1_Click()
If Option1.Value = True Then
Text2.Text = "normal"
Else
If Option2.Value True Then Option1.Value False

Text2.Text = "feries"
If Option3.Value True Then Option1.Value False & Option2.Value = False
Text2.Text = "recuperation"
End If
End Sub

Private Sub Option3_Click()
If Option3.Value = True Then
Option1.Value = False
Option2.Value = False

Text2.Text = "recuperation"

End If
End Sub

Private Sub Option4_Click()
If Option1.Value = True Then
Text2.Text = "maladie"
Else
If Option2.Value True Then Option1.Value False

Text2.Text = "feries"
If Option3.Value True Then Option1.Value False & Option2.Value = False
Text2.Text = "maladie"
End If
End Sub

Private Sub Option5_Click()
If Option5.Value = True Then
Option1.Value = False
Option2.Value = False
Option3.Value = False
Option4.Value = False
Text2.Text = "congé"
If Option5.Value True Then DTPicker3.Value "06:30:00"
End If
End Sub
Private Sub Option2_Click()
If Option1.Value = False Then
Text2.Text = "ferie"

End If
End Sub

Private Sub SAUVEGARDE_Click()
Dim file_name As String
Dim fnum As Integer
Dim max_row As Integer
Dim max_col As Integer
Dim R As Integer
Dim yy As Integer

file_name = App.Path
If Right$(file_name, 1) <> "" Then file_name = file_name & ""
file_name = file_name & "FlexGrid1.dat"

fnum = FreeFile
Open file_name For Output As fnum


max_row = MSFlexGrid1.Rows - 1
max_col = MSFlexGrid1.Cols - 1
Write #fnum, max_row, max_col

For R = 0 To max_row
For yy = 0 To max_col
Write #fnum, MSFlexGrid1.TextMatrix(R, yy);
Next yy
Write #fnum,
Next R

Close fnum
Dim f As Integer
f = FreeFile
Open "1.txt" For Output As #f
Print #f, DTPicker9.Value
Close #f
Dim a As Integer
a = FreeFile
Open "2.txt" For Output As #a
Print #a, DTPicker10.Value
Close #a
Dim b As Integer
b = FreeFile
Open "3.txt" For Output As #b
Print #b, DTPicker11.Value
Close #b
Dim Z As Integer
Z = FreeFile
Open "6.txt" For Output As #Z
Print #Z, Text1.Text
Close #Z

End Sub

donc mon probleme ce situe au dtpicker 9 , ce que je veut faire c est pouvoir faire un cumul des heures du mois qui doit logiquement s afficher dans ce dtpicker

ps: je c est qu il y a trop de fichiers texte mais j ais pas trouver comment mettre toutes mais sauvegarde sur un seul

encore merci pour votre aide et a bientot
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
14 mars 2012 à 20:35
ouais ! ...
Et maintenant : carrément 11 contrôles Dtpickers !
Et cette ligne (lu "au hasqard d'un code non présenté entre balises) qui m'intrigue :
If Option3.Value True Then Option1.Value False & Option2.Value = False

C'est normal, d'écrire cela, en VB.Net ? =>> si oui : que quelqu'un veuille bien avoir la gentillesse de satisfaire ma curiosité : comment est-ce interprété par le compilateur ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
14 mars 2012 à 21:07
Juste pour que tu comprennes à quel point il te faut reconsidérer des aspects : ===>>
Tu es chef d'entreprise et tu as 40 employés.
Tu as besoin de contrôler leurs arrivées et leurs départs.
Comment t'y prends-tu ?
- une pointeuse par employé ?
ou
- une seule pointeuse (en mettant en mémoire) l'heure (d'arrivée ou de départ) correspondant à chaque employé ?

Il en va de même en ce qui concerne tes dtpickers. Un seul suffit et il suffit de mettre en mémoire (dans la variable y correspondant) le choix fait dans le dtpicker, lorsque utilisé pour telle ou telle autre fin (= telle ou telle autre variable).

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
14 mars 2012 à 21:14
Salut

eh ben

je vous met l ensemble de mon code pour que vous puissiez mieux comprendre




Peux tu dire qu'est que le code est suposé de faire ?
0
ocejade
Messages postés
55
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
6 avril 2015

22 mars 2012 à 20:32
bonsoir et désoler du retard de réponse

alors pour faire court mon code me serre a effectuer un relever d heure imprimable il me calcule mais heures effectuer dans la journée , mes heures supplémentaire , mes heures de nuit et tout cela et additionner pour avoir un total du mois que je peut imprimer

comme le code que j ais déjà mis sur code source sous le nom calcul heure de nuit 2 sauf que je veux le modifier pour avoir une meilleur prise en main a l utilisation c est pour ça que le choix des dtpicker été plus judicieux que les textbox


je vous remercie encore et a bientot
0
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
22 mars 2012 à 21:39
Salut

tu veux calculer les heures de travaille
pour le mois
cela serait beaucoup mieux d'utiliser une BDD
et un interface vb au lieu de N datetimepicker
en plus tu pourras effectuer des requetes
statistique
ex combien d'heures suplémentaire j'ai fait
le mois dernier
0