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

Saisie rapide de données temporelles

6 réponses
Avatar
Steve
Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25 qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne 25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide

6 réponses

Avatar
MichDenis
Un petit exemple que tu peux insérer dans ta boucle

Sub SAISIE()
Dim C As Range, X As String, A As String
Application.ScreenUpdating = False
For Each C In Selection
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
End Sub





"Steve" a écrit dans le message de news:
Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25 qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne 25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide
Avatar
Elliac
Bonjour,

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeSerial(0, Left(c.Value, 2), Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Camille

"MichDenis" wrote:

Un petit exemple que tu peux insérer dans ta boucle

Sub SAISIE()
Dim C As Range, X As String, A As String
Application.ScreenUpdating = False
For Each C In Selection
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
End Sub





"Steve" a écrit dans le message de news:
Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25 qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne 25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide






Avatar
Steve
Merci a vous deux pour votre aide.

J'aurai voulu savoir s' il est possible que lorsque je rentre 2412 cela me
donne tout de suite 24:12
une macro genre "Private Sub Worksheet_Change"
Merci encore

"Elliac" a écrit dans le message de news:

Bonjour,

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeSerial(0, Left(c.Value, 2), Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Camille

"MichDenis" wrote:

Un petit exemple que tu peux insérer dans ta boucle

Sub SAISIE()
Dim C As Range, X As String, A As String
Application.ScreenUpdating = False
For Each C In Selection
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
End Sub





"Steve" a écrit dans le message de news:

Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25
qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne
25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide








Avatar
MichDenis
Tu copies ceci dans le module feuille où l'action se déroule :

L'exemple suivant utilise la plage A:A, tu adaptes selon la plage
où cela doit s'appliquer dans ton programme.

'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Range("A:A"), Target)
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
Application.EnableEvents = True
End If

End Sub
'---------------------------------



"Steve" a écrit dans le message de news:
Merci a vous deux pour votre aide.

J'aurai voulu savoir s' il est possible que lorsque je rentre 2412 cela me
donne tout de suite 24:12
une macro genre "Private Sub Worksheet_Change"
Merci encore

"Elliac" a écrit dans le message de news:

Bonjour,

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeSerial(0, Left(c.Value, 2), Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Camille

"MichDenis" wrote:

Un petit exemple que tu peux insérer dans ta boucle

Sub SAISIE()
Dim C As Range, X As String, A As String
Application.ScreenUpdating = False
For Each C In Selection
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
End Sub





"Steve" a écrit dans le message de news:

Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25
qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne
25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide








Avatar
Modeste
Bonsour® Steve avec ferveur ;o))) vous nous disiez :

Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25
?????????

J'aurai voulu savoir s' il est possible que lorsque je rentre 2412 cela me
donne tout de suite 24:12


Heu ... et comment crois-tu que l'on va deviner
que tu veux 00:23:25 et non pas 23:25:00
que tu veux 00:24:12 et non pas 24:12:00 (*)

il te faut plus de rigueur dans ta formulation !!!!!
soit ta saisie est convertible uniquement en [h]:mm ou uniquement [m]:ss
soit tu saisis toujours 6+ chiffres convertibles en [h]:mm:ss (*)

c'est si compliqué que ça de saisir ":" ????

si tu ne souhaites utiliser que le pavé numérique
un astuce dans "Option Corrections automatique lors de la frappe" remplacer ..
par :


--
--
@+
;o)))

Avatar
Elliac
Bonjour,

Une astuce trouvée sur ce forum et que j'utilise remplacer .. par :
ainsi tu tapes 23..25 ce qui te donnes 23:25 avec la correction automatique

Camille

"Steve" wrote:

Merci a vous deux pour votre aide.

J'aurai voulu savoir s' il est possible que lorsque je rentre 2412 cela me
donne tout de suite 24:12
une macro genre "Private Sub Worksheet_Change"
Merci encore

"Elliac" a écrit dans le message de news:

Bonjour,

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeSerial(0, Left(c.Value, 2), Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Camille

"MichDenis" wrote:

Un petit exemple que tu peux insérer dans ta boucle

Sub SAISIE()
Dim C As Range, X As String, A As String
Application.ScreenUpdating = False
For Each C In Selection
A = C
X = "00:" & Left(A, 2) & ":" & Right(A, 2) & ""
With C
.NumberFormat = "HH:MM:SS"
.Value = TimeValue(X)
End With
Next
End Sub





"Steve" a écrit dans le message de news:

Bonjour,
Je voudrais pouvoir saisir 2325 et que dans ma cellule ce soit 00:23:25
qui
soit entré.

J'ai bien essayé ce bout de code mais cela ne marche pas il me donne
25:00
comme résultat
à la place de 23:25

Sub SAISIE()
Application.ScreenUpdating = False
For Each c In Selection
c.Value = TimeValue(Left(Application.Text(c.Value, "0000"), 2) _
& ":" & Right(c.Value, 2))
c.NumberFormat = "mm:ss"
Next c
End Sub

Merci de votre aide