Format personnalisé Heure non fonctionnel

Bonjour à toutes et à tous,

Je voudrais faire comme dans Access (masque de saisie) pour une cellule contenant une heure : minutes indiquée par l'utilisateur. (10:15)

J'ai donc été dans le format personnalisé et sélectionné hh:mm mais lorsque j'indique une heure minute sans ajouter les 2 points, cela m'indique 00:00
Si j'introduis 10:15 avec les deux points, à ce moment là, la valeur est bonne.

J'ai lu que normalement il ne fallait pas ajouter les 2 points.
J'ai essayé sur une nouvelle feuille également : même problème. Fonctionne que si j'ajoute les 2 points.

Merci d'avance pour votre aide.

Bonne journée

Bonjours Wags

Excel n'est pas Access pour qu'Excel comprenne qu'il s'agit d'une heure, il faut effectivement ajoutée les 2 points

Sinon il faudra passer par VBA

A+

Bonjour,
Un exemple à adapter de la saisie des heures, en VBA.
Cdlt.

2saisie-heures.xlsm (14.81 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim temp As String
    With Target
        If .Address = "$B$1" Then
            Application.EnableEvents = False
            If .Value <> 0 Then
                If InStr(.Text, ":") = 0 Then
                    temp = Format(.Text, "0000")
                    temp = Left(temp, 2) & ":" & Right(temp, 2)
                    If IsDate(temp) Then
                        .Value = temp
                    Else
                        MsgBox "Saisie invalide!...", 64, "Information"
                        Application.Undo
                    End If
                End If
            End If
            Application.EnableEvents = True
        End If
    End With
End Sub

Merci à vous deux pour vos réponses.

Je regarde tout cela attentivement plus tard dans la journée et reviens vers vous ;)

@Jean-Eric :

Je te remercie pour cet exemple mais dès que je change de cellule la donnée introduite s'en va.

Merci pour ton aide.

Bonne journée

Re,
C'est un exemple que j'ai repris et qu'il faut adapter.
Joins un fichier pour la suite.
Cdlt.

Re,

Merci pour ta réponse.

Ci joint le fichier.

Merci d'avance pour ton aide.

Bonne journée.

Bonjour le fil,

@wags, vous êtes dans un TS (c'est très bien), mais du coup la cellule garde le format heure
donc si vous saisissez "845" par exemple, vous obtenez "Date + 00:00", affichage "00:00"

Voici le code adapté de celui de Jean-Eric que je salue et quelque peu modifié pour palier aux éventualités (à tester)

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sTemp As String
  ' Sors de la procédure si slection multiple ou cellule vie
  If Target.Count > 1 Then Exit Sub
  If Target.Value = "" Then Exit Sub
  ' Sinon
  If Not Intersect(Target, Range("Tableau1[Heure]")) Is Nothing Then
    Application.EnableEvents = False
    If Target.Text = "00:00" Then
      ' Saisi d'une heure sans les 2 points = 856
      If Len(Trim(Target.Value)) <= 4 Then
        sTemp = Format(Target.Value, "0000")
        sTemp = Left(sTemp, 2) & ":" & Right(sTemp, 2)
      ' Pourquoi pas gérer
      ' Si l'utilisateur saisi une heure comme un date 10/12 au lieu de 10;12
      ElseIf IsDate(CDate(Trim(Target.Value))) Then
        sTemp = Day(Target.Value) & ":" & Month(Target.Value)
      End If
      Target.Value = sTemp
    ElseIf InStr(1, Target.Text, ":") > 0 Then
    ' C'est ok
    Else
      MsgBox "Saisie invalide!...", vbCritical, "Information"
      Application.Undo
      ' Remettre la cellule au bon format au cas ou
      Target.NumberFormat = "hh:mm"
    End If
  End If
  Application.EnableEvents = True
End Sub

Edit : test de la longeur saisie, modifié

A+

Bonjour BrunoM45,

Merci pour ce code.
J'ai donc modifié le fichier d'origine puisque dans le code il est mentionné un Tableau1[Heure]

Il y a deux soucis.

1 - Quand j'indique 4 chiffres (1245) il indique 05:05

2 - Dans le tableau, il faut qu'il y ait une ligne en dessous pour que cela fonctionne (mais avec l'erreur du point 1)

Merci d'avance pour votre aide. Là, je sèche totalement.

Je vous souhaite une bonne journée.

4saisie-heures.xlsm (18.36 Ko)

Bonjour,

Désolé, c'est le 2ème test qui n'est pas correct, il faut mettre <= 4 et non strictement <

If Len(Trim(Target.Value)) <= 4 Then

Mais il y a un autre souci si la colonne n'est pas mise au bon format, donc à faire impérativement (format heure)

@+

@BrunoM45

Pas de désolé : il y a aucun souci. J'aurais été incapable de faire ce code.

Cela fonctionne.

Juste un détail, il faut choisir le format personnalisé et ensuite hh:mm et tout fonctionne parfaitement.

Un énorme merci.

Bon dimanche

Rechercher des sujets similaires à "format personnalise heure fonctionnel"