Feuille de temps

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #4596751
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" 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


Publicité
Poster une réponse
Anonyme