1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| Public WithEvents GroupeTxt As MSForms.TextBox
Public WithEvents GroupeTxt2 As MSForms.TextBox
Private Sub GroupeTxt2_Change() 'Appelé par l'UserForm2 ..!
Dim DebMatinf As Date
Dim FinApremf As Date
Dim Lundif As Date
Dim Mardif As Date
Dim Mercredif As Date
Dim Jeudif As Date
Dim Vendredif As Date
Dim Samedif As Date
Dim Dimanchef As Date
Dim Totalf As Double
Dim J As Integer
For J = 3 To 21 Step 3
'si la longueur du texte est égale à 5 pour tous
If Len(UserForm2.Controls("T" & J - 4).Value) = 5 _
And Len(UserForm2.Controls("T" & J - 3).Value) = 5 _
And Len(UserForm2.Controls("T" & J - 2).Value) = 5 _
And Len(UserForm2.Controls("T" & J - 1).Value) = 5 Then
'converti en date
DebMatinf = CDate(UserForm2.Controls("T" & J - 2).Value)
FinApremf = CDate(UserForm2.Controls("T" & J - 1).Value)
'totalise en convertissant en double
Totalf = CDbl(FinApremf - DebMatinf)
'affiche au format heures : minutes
UserForm2.Controls("T" & J).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
End If
Next J
On Error Resume Next 'permet de totaliser ligne par ligne
'idem, conversion en date
Lundif = CDate(UserForm2.T100.Value)
Mardif = CDate(UserForm2.T101.Value)
Mercredif = CDate(UserForm2.T102.Value)
Jeudif = CDate(UserForm2.T103.Value)
Vendredif = CDate(UserForm2.T104.Value)
Samedif = CDate(UserForm2.T105.Value)
Dimanchef = CDate(UserForm2.T106.Value)
'puis en double
Totalf = CDbl(Lundif + Mardif + Mercredif + Jeudif + Vendredif + Samedif + Dimanchef)
'au format heures : minutes au delà de 24 h
UserForm2.T107.Value = Application.WorksheetFunction.Text(Total, "[hh]:mm")
End Sub
Private Sub GroupeTxt2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Appelé par l'UserForm2 ..!
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub GroupeTxt2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Appelé par l'UserForm2 ..!
If KeyCode <> 8 Then 'suppression !
If Len(GroupeTxt2) = 2 Then GroupeTxt2 = GroupeTxt2 & ":"
If Len(GroupeTxt2) > 5 Then GroupeTxt2 = Left(GroupeTxt2, 5)
End If
End Sub
Private Sub GroupeTxt_Change()
Dim DebMatin As Date
Dim FinMatin As Date
Dim DebAprem As Date
Dim FinAprem As Date
Dim Lundi As Date
Dim Mardi As Date
Dim Mercredi As Date
Dim Jeudi As Date
Dim Vendredi As Date
Dim Samedi As Date
Dim Dimanche As Date
Dim Formation As Date
Dim Total As Double
Dim Total_formation As Double
Dim I As Integer
For I = 6 To 42 Step 6
'si la longueur du texte est égale à 5 pour tous
If Len(user.Controls("T" & I - 5).Value) = 5 _
And Len(user.Controls("T" & I - 4).Value) = 5 _
And Len(user.Controls("T" & I - 3).Value) = 5 _
And Len(user.Controls("T" & I - 2).Value) = 5 _
And Len(user.Controls("T" & I - 1).Value) = 5 Then
'converti en date
DebMatin = CDate(user.Controls("T" & I - 5).Value)
FinMatin = CDate(user.Controls("T" & I - 4).Value)
DebAprem = CDate(user.Controls("T" & I - 3).Value)
FinAprem = CDate(user.Controls("T" & I - 2).Value)
Formation = CDate(user.Controls("T" & I - 1).Value)
'totalise en convertissant en double
Total = CDbl(FinMatin - DebMatin + FinAprem - DebAprem) + CDbl(Formation)
'affiche au format heures : minutes
user.Controls("T" & I).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
End If
Next I
On Error Resume Next 'permet de totaliser ligne par ligne
'idem, conversion en date
Lundi = CDate(user.T6.Value)
Mardi = CDate(user.T12.Value)
Mercredi = CDate(user.T18.Value)
Jeudi = CDate(user.T24.Value)
Vendredi = CDate(user.T30.Value)
Samedi = CDate(user.T36.Value)
Dimanche = CDate(user.T42.Value)
'puis en double
Total = CDbl(Lundi + Mardi + Mercredi + Jeudi + Vendredi + Samedi + Dimanche)
Total_formation = CDate(user.T5.Value) + CDate(user.T11.Value) + CDate(user.T17.Value) + CDate(user.T23.Value) + CDate(user.T29.Value) + CDate(user.T35.Value) + CDate(user.T41.Value)
'au format heures : minutes au delà de 24 h
user.T43.Value = Application.WorksheetFunction.Text(Total, "[hh]:mm")
user.T44.Value = Application.WorksheetFunction.Text(Total_formation, "[hh]:mm")
End Sub
Private Sub GroupeTxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub GroupeTxt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode <> 8 Then 'suppression !
If Len(GroupeTxt) = 2 Then GroupeTxt = GroupeTxt & ":"
If Len(GroupeTxt) > 5 Then GroupeTxt = Left(GroupeTxt, 5)
End If
End Sub |
Partager