Convertir nombre vers heure

Résolu/Fermé
Amin - 26 mai 2016 à 17:02
 Amin - 27 mai 2016 à 12:14
Bonjour,

Est-ce qu'il y a un moyen de convertir les entrées numériques vers le format heure?

par exemple, je me place sur la cellule A1, je tape 1030,en appuyant sur la touche entré ou sans rien faire, je voudrais que ça affiche 10h30 ou 10:30.

Merci d'avance pour votre précieuse réponse

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 mai 2016 à 17:59
Bonjour
valable à partir jusqu'à 2400 dans la zone A2:M12
se déclenche appui sur "entr"
a installer dans l'éditeur VBA module de la feuille

Option Explicit
'--------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim minut As Double, heure As Double
Static Flag As Boolean
If Not Intersect(Target, Range("A2:M12")) Is Nothing And _
IsNumeric(Target) And _
Target < 2400 And _
Not Flag Then
Flag = True
minut = (Right(Target, 2)) * 1 / 1440
If Len(Target) > 2 Then heure = (Left(Target, Len(Target) - 2)) * 1 / 24
Target = heure + minut
Target.NumberFormat = "hh:mm;@"
End If
Flag = False
End Sub


comment installer ?
copier cette macro
clic droit sur le nom de l'onglet de la feuille concernée (en bas de l'écran)
visualiser le code
coller

-1
Bonjour Michel_m,

ça marche !!!! merci bcp !!!

Mais il y a un petit soucis (mais pas très gênant) ... quand je supprime une cellule, un message error qui s'affiche
"Microsoft Visual Basic
Erreur d'exécution « 13 »:
Incompatibilité de type"

Est-ce normal ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Amin
27 mai 2016 à 09:39
Bonjour

et un "AND" en + avec la suppression de donnée!
Option Explicit
'--------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim minut As Double, heure As Double
Static Flag As Boolean
If Not Intersect(Target, Range("A2:M12")) Is Nothing And _
IsNumeric(Target) And _
Target < 2400 And _
Target <> "" And _
Not Flag Then
Flag = True
minut = (Right(Target, 2)) * 1 / 1440
If Len(Target) > 2 Then heure = (Left(Target, Len(Target) - 2)) * 1 / 24
Target = heure + minut
Target.NumberFormat = "hh:mm;@"
End If
Flag = False
End Sub
0
Génial... Un grand Merci pour vous !!!
0