Convertir nombre vers heure

Résolu
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

  1. Contributeur
    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
    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
    2. Contributeur
      @AminBonjour

      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
    3. Génial... Un grand Merci pour vous !!!
      0