Bonjour à tous,
j'ai récemment trouvé ici ou un autre forum, un code vba pour permettre de ne pas saisir les : dans les heures.
le code fonctionne, mais si j'entre du texte, sur une cellule çà indique incompatibilté de type 13.
j'ai essayé de trouver des parades comme si la cellule selectionné n'est pas numérique, je demande à VBA de sortir du programme, mais çà fonctionne pas.
Si je précise les cellules du target bien précisément, c'est aussi une solution, mais mon planning contient plus de 15 colonnes, et si mon collègue se trompe de colonne çà plante.
j'aimerais enlever le target, et permettre à saisir les heures sans le : sans contrainte de cellules dans la feuille sélectionnée.
Je vous remercie infinimment pour vos réponses.
Mickaël
voici le code vba :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Heures As Single, Minutes As Single
Application.EnableEvents = False
If Not Intersect(Target, Range("A1:z60")) Is Nothing And Target.Cells.Count = 1 Then
If Target.Value <> "" Then
If Right(Target, 2) * 1 >= 60 Then
MsgBox "Nombre invalide !"
Application.EnableEvents = True
Exit Sub
End If
Minutes = Right(Target, 2) / 1440
If Len(Target) > 2 Then Heures = Int(Target / 100) / 24
Range(Target.Address) = Heures + Minutes
End If
End If
Application.EnableEvents = True
End Sub
Nota bene : si vous avez besoin d'un fichier, je vous ferez parvenir un extrait de mon planning
Cordialement !
j'ai récemment trouvé ici ou un autre forum, un code vba pour permettre de ne pas saisir les : dans les heures.
le code fonctionne, mais si j'entre du texte, sur une cellule çà indique incompatibilté de type 13.
j'ai essayé de trouver des parades comme si la cellule selectionné n'est pas numérique, je demande à VBA de sortir du programme, mais çà fonctionne pas.
Si je précise les cellules du target bien précisément, c'est aussi une solution, mais mon planning contient plus de 15 colonnes, et si mon collègue se trompe de colonne çà plante.
j'aimerais enlever le target, et permettre à saisir les heures sans le : sans contrainte de cellules dans la feuille sélectionnée.
Je vous remercie infinimment pour vos réponses.
Mickaël
voici le code vba :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Heures As Single, Minutes As Single
Application.EnableEvents = False
If Not Intersect(Target, Range("A1:z60")) Is Nothing And Target.Cells.Count = 1 Then
If Target.Value <> "" Then
If Right(Target, 2) * 1 >= 60 Then
MsgBox "Nombre invalide !"
Application.EnableEvents = True
Exit Sub
End If
Minutes = Right(Target, 2) / 1440
If Len(Target) > 2 Then Heures = Int(Target / 100) / 24
Range(Target.Address) = Heures + Minutes
End If
End If
Application.EnableEvents = True
End Sub
Nota bene : si vous avez besoin d'un fichier, je vous ferez parvenir un extrait de mon planning
Cordialement !