Re-bonjour.
JM, nos 2 posts de 11h se sont croisés. Donc, comme je le pressentais, il faut faire la modif "en temps réel" sur la cellule de saisie. Donc voici une macro toute simple à insérer dans le module de la feuille correspondante.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.NumberFormat = "h:mm" Then
Target.NumberFormat = "General"
Target = Target * 24
End If
End Sub
Attention: il y a quelques défauts:
J'ai remarqué que si on saisi par exemple 11:30, alors le format de la cellule est forcé à h:mm, et c'est ce que j'utilise.
Mais si on ajoute les secondes (11:30:15) alors cela ne fonctionne plus.
De même si le format de ta cellule était déjà un format heure spécial (par exemple h:mm AM/PM. Je n'ai pas mis le test sur tous les cas.
L'idéal est de définir a priori le format de cellule comme standard (de toute façon, il le redevient après la macro). Mais tu n'est pas à l'abri que l'utilisateur saisisse "11:30 PM".
Si l'utilisateur saisit 11,50, la macro ne considère pas qu'il a tapé 11h50, mais bien 11,50 heures
D'autre part, dans mon code, toutes les cellules de la feuille seront concernées, sinon, il faut rajouter un test sur le Target si tu veux te limiter à certaines cellules. Par exemple, rajoutes au début
If Not Application.Intersect(Target, Range("B2:B10"))Is Nothing ThenSi tu veux limiter aux seules cellules B2 à B10.
Bref, c'est à perfectionner, et j'ai des doutes sur la réelle efficacité de la chose. Il faut être sûr que l'utilisateur saisira en format hh:mm