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 "
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Construk@discussions.microsoft.com> a écrit dans le message de
news: D0B4CBE9-092F-4E8D-A1C3-47C274D67E83@microsoft.com...
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 "
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 "