Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Feuille de temps

1 réponse
Avatar
Construk
Bonjour,

je veux que dans ma feuille de temps, lorsque je tappe 024 que cela
s'affiche 0:24 dans la cellule et que je puisse ensuite l'utiliser pour faire
les calculs de temps utiles dans ma feuille de temps. J'ai trouvé une rustine
qui s'applique dans le worksheet mais elle ne gère pas les heures entre
minuit et 1:00 AM. J'essais de fonctionner en affichage 24h.

Michel

Voici la rustine que j'ai trouvé, mais qui ne répond pas vraiment:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String

On Error GoTo EndMacro
If Application.Intersect(Target, Range("Temps")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 1:00 AM
TimeStr = .Value & ":00"
Case 2 ' e.g., 12 = 12:00 AM
TimeStr = .Value & ":00"
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & _
Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & _
Right(.Value, 2)
' Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
' TimeStr = Left(.Value, 1) & ":" & _
' Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
' Case 6 ' e.g., 123456 = 12:34:56
' TimeStr = Left(.Value, 2) & ":" & _
' Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
.Value = TimeValue(TimeStr)
End If

End With
Application.EnableEvents = True

Exit Sub
EndMacro:
MsgBox "Vous devez inscrire vos données comme suit: pour 13:45 , inscrire
1345 "

Application.EnableEvents = True

End Sub

1 réponse

Avatar
Daniel
Bonjour.
A mettre dans le code de la feuille; limite éventuellement la plage
d'application :

Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target) Then
Application.EnableEvents = False
Target = Int(Target / 100) & ":" & Right(Target, 2)
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel
"Construk" a écrit dans le message de
news:
Bonjour,

je veux que dans ma feuille de temps, lorsque je tappe 024 que cela
s'affiche 0:24 dans la cellule et que je puisse ensuite l'utiliser pour
faire
les calculs de temps utiles dans ma feuille de temps. J'ai trouvé une
rustine
qui s'applique dans le worksheet mais elle ne gère pas les heures entre
minuit et 1:00 AM. J'essais de fonctionner en affichage 24h.

Michel

Voici la rustine que j'ai trouvé, mais qui ne répond pas vraiment:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String

On Error GoTo EndMacro
If Application.Intersect(Target, Range("Temps")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 1:00 AM
TimeStr = .Value & ":00"
Case 2 ' e.g., 12 = 12:00 AM
TimeStr = .Value & ":00"
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & _
Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & _
Right(.Value, 2)
' Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
' TimeStr = Left(.Value, 1) & ":" & _
' Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
' Case 6 ' e.g., 123456 = 12:34:56
' TimeStr = Left(.Value, 2) & ":" & _
' Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
.Value = TimeValue(TimeStr)
End If

End With
Application.EnableEvents = True

Exit Sub
EndMacro:
MsgBox "Vous devez inscrire vos données comme suit: pour 13:45 , inscrire
1345 "

Application.EnableEvents = True

End Sub