Adapter un code userform pour l'appliquer sur la feuille

Bonjour le forum, bonjour à tous,

J'ai ce code pour un userform qui fonctionne super bien. Il permet de passer automatiquement d'une textbox à l'autre en format heure sans être obligé de faire les :, et j'aimerais avoir l'équivalent pour les cellules "D5:F65000" d'une feuille. En fait, je souhaite retirer l'userform pour que les usagers saisissent directement sur la feuille.

Merci

Private Sub conversionHeure(ctlTextBox As MSForms.TextBox)
'Convertir les texte des textBox en heure minutes
Dim heures As Byte, minutes As Byte
'Heures = les deux chiffres de gauche
heures = Val(Left(ctlTextBox.Text, 2))
'minutes= les deux chiffres de droites
minutes = Val(Right(ctlTextBox.Text, 2))
'conversion
ctlTextBox.Text = Format(TimeSerial(heures, minutes, 0), ("hh:mm"))
End Sub
Private Sub TextBox5_Change()
If Len(TextBox5.Text) = 4 Then TextBox6.SetFocus
If Len(TextBox5) = 4 Then
conversionHeure TextBox5
End If
End Sub
Private Sub TextBox6_Change()
If Len(TextBox6.Text) = 4 Then TextBox7.SetFocus
If Len(TextBox6) = 4 Then
conversionHeure TextBox6
End If
End Sub
Private Sub TextBox7_Change()
If Len(TextBox7) = 4 Then
conversionHeure TextBox7
End If
End Sub

Bonsoir

Procédure à placer dans le module de la feuille

Vérification de la validité de l'heure

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Heure As String

  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("D5:F65000"), Target) Is Nothing Then
    If Not IsNumeric(Target) Then Exit Sub
    Heure = Format(Abs(Target), "0000")
    If Val(Left(Heure, 2)) > 23 Then
      MsgBox "Heures non valables"
    ElseIf Val(Right(Heure, 2)) > 59 Then
      MsgBox "Minutes non valables"
    Else
      Application.EnableEvents = False
      Target = Left(Heure, 2) & ":" & Right(Heure, 2)
      Application.EnableEvents = True
    End If
  End If
End Sub

Oui, en effet bonsoir, il n'est que 15:43 à Montréal

merci pour la conversion, mais est-il possible de pourvoir passer automatiquement, par exemple, de la cellule D5 à E5 et en suite F5 sans être obligé d'utiliser le tab?

Merci

Bonsoir

6 heures de décalage, ici il fait nuit et il est 22h15

A tester

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Heure As String

  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("D5:F65000"), Target) Is Nothing Then
    If Not IsNumeric(Target) Then
      Target.Select
      MsgBox "Seulement des nombres"
      Exit Sub
    End If
    Heure = Format(Abs(Target), "0000")
    If Val(Left(Heure, 2)) > 23 Then
      Target.Select
      MsgBox "Heures non valables"
    ElseIf Val(Right(Heure, 2)) > 59 Then
      Target.Select
      MsgBox "Minutes non valables"
    Else
      Application.EnableEvents = False
      Target = Left(Heure, 2) & ":" & Right(Heure, 2)
      Application.EnableEvents = True
      If Target.Column = 4 Or Target.Column = 5 Then
        Target.Offset(0, 1).Select
      ElseIf Target.Column = 6 Then
        Target.Offset(1, -2).Select
      End If
    End If
  End If
End Sub

Bonsoir Banzai64

Merci pour votre dévouement, après vérification, cela ne fonctionne pas.

Dans l'userform, quand j'inscris dans la Texbox5 1200, automatiquement on se retrouve dans le Texbox suivant!

Croyez vous qu'il y aurait un lien à faire avec le setfocus de la prochaine cellule. Comme je ne m'y connais pas assez, peut-être que cela n'a aucun rapport.

Merci

Bonsoir

Dans la feuille XL il faudra que tu passes par la phase "Entrée" pour valider la saisie

Et le code fonctionne très bien

Je saisis en D5 1200, j’appuie sur "Entrée" et la cellule E5 est sélectionnée,tandis qu'en D5 il y a 12:00

Bonjour Banzai64

D'accord pour une touche de validation obligatoire, et merci beaucoup pour votre coup de pouce indispensable.

à bientôt

Rechercher des sujets similaires à "adapter code userform appliquer feuille"