Aide à la saisie des heures

Guiv

XLDnaute Occasionnel
Bonjour à tous,

Je sais que les histoires de format d'heure abondent sur le forum, mais j'ai beau chercher ici et ailleurs, je ne trouve pas (alors que c'est sans doute relativement simple). Voilà:
Dans une plage de cellules, je voudrais qu'un opérateur ne sachant pas opérer puisse saisir facilement les heures au clavier numérique, en utilisant le "." du clavier à la place de ":".

Ci-joint un petit fichier exemple où j'ai commencé qlq chose mais pas satisfaisant...
Merci à ceux qui auront une idée à me faire partager,
Cordialement,

Guiv
 

Pièces jointes

  • SaisieHeures.xls
    22 KB · Affichages: 81
  • SaisieHeures.xls
    22 KB · Affichages: 86
  • SaisieHeures.xls
    22 KB · Affichages: 85

wilfried_42

XLDnaute Barbatruc
Re : Aide à la saisie des heures

Bonjour

Voici une macro

Code:
Private Sub WorkSheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
    Target = CDate(CStr(Int(Target.Value)) & ":" & CStr((Target.Value - Int(Target.Value)) * 100) & ":00")
End If
End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : Aide à la saisie des heures

re:

je suis trop bete, j'ai oublié que la mise à jour de target relancait l'interruption d'evennement

Code:
Private Sub WorkSheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
        Application.EnableEvents = Not Application.EnableEvents
        Target = CDate(CStr(Int(Target.Value)) & ":" & CStr((Target.Value - Int(Target.Value)) * 100) & ":00")
        Application.EnableEvents = Not Application.EnableEvents
    End If
End Sub
 

abcd

XLDnaute Barbatruc
Re : Aide à la saisie des heures

Bonjour,

Et pourtant une astuce a été déposée en son temps sur ce forum, que l'auteur m'en excuse, je ne me souviens pas de son nom.

Passer par le correcteur d'orthographe en remplaçant .. par :
Ainsi en tapant .. sur le clavier numérique ceux-ci se transforment en : lors de la validation.

abcd
 

Guiv

XLDnaute Occasionnel
Re : Aide à la saisie des heures

Bonsoir le forum, Wilfried_42, abcd, JHA,

Merci de vos suggestions,mais mon problème n'est pas résolu...

Wilfried_42 : il n'y a plus de bug, mais ça ne fonctionne pas... (résultat dans le fichier joint)

abcd : j'y avais pensé, mais je voudrais que ça ne fonctionne que dans la plage déterminée, et en plus ça ne fonctionne pas si on saisit un chiffre sans "." après.

JHA : la solution par formule ne permet pas de saisir directement dans la cellule...

Je suis pourtant sûr d'avoir déjà vu des fils là-dessus, mais je ne les retrouve pas. C'est un truc plus facile à faire dans un textbox par exemple, mais directement dans la cellule???

Dans l'attente de vos idées,
Cordialement,

Guiv
 

Pièces jointes

  • SaisieHeures 19h03.xls
    21 KB · Affichages: 76

Monique

Nous a quitté
Repose en paix
Re : Aide à la saisie des heures

Bonjour,

"j'y avais pensé, mais je voudrais que ça ne fonctionne que dans la plage déterminée, et en plus ça ne fonctionne pas si on saisit un chiffre sans "." après."

ça ne fonctionnera dans une autre plage que si tu saisis, ailleurs que dans la plage déterminée, deux points ou deux virgules de rang. (selon ce que tu as comme séparateur de décimales)
Si ton séparateur de décimales est la virgule, je ne vois pas pourquoi tu saisirais quelque part 2 virgules de rang.
Si c'est le point, ce n'est pas tous les jours qu'on a besoin de… points de suspension dans Excel.

Sinon, pour obtenir 08:00 il suffit de taper 8 et deux points (ou 2 virgules). Même pas besoin de saisir les 0
Chez moi, le séparateur est la virgule.
Je saisis 8,, et c'est tout, j'obtiens 08:00
 

wilfried_42

XLDnaute Barbatruc
Re : Aide à la saisie des heures

re:

nouvelle macro, excel me met les boules

exemple : 12,44 ---> retour 12:44 ok
12,45----> retour 12.44 pas bon
pourquoi : pour excel 12,45 - int(12,45) est egale à 0,44999999999 voila pourquoi j'ai les boules

voici une macro qui devrait fonctionner avec toutes les saisies

Code:
Private Sub WorkSheet_Change(ByVal Target As Range)
    Dim tps As Single
    tps = Target.Value * 100
    
    If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
        Application.EnableEvents = Not Application.EnableEvents
        Target = CDate(CStr(Int(tps / 100)) & ":" & CStr(tps Mod 100) & ":00")
        Application.EnableEvents = Not Application.EnableEvents
    End If
End Sub
 

Guiv

XLDnaute Occasionnel
Re : Aide à la saisie des heures

Re bonsoir,
Merci encore à tous, mais ça ne marche pas...

Wilfried: voir fichier joint (8,3 donne 0:34 et 12,45 donne 0:53). Ca marche bien pour les entiers (8 donne 08:00)

Monique : chez moi, la modif de "." par ":" se fait dans toutes les cellules, et pour les entiers, si je fais "8..", ça me donne "8::", et "8" me donne "8"...

C'est énervant, non?
Je cherche aussi de mon côté, mais rien d'efficace à 100%.

A vous lire,
Guiv
 

Pièces jointes

  • SaisieHeures 20h36.xls
    21 KB · Affichages: 83

wilfried_42

XLDnaute Barbatruc
Re : Aide à la saisie des heures

re:

je viens de reprendre le fichier que tu as posté, chez moi c'est ok tilisation du clavier numerique 8.30 donnat 8,30 renvoie bien 8:30

je ne comprends pas, si quelqu'un pouvait tester le fichier
merci à lui

re:, j'ai essayé avec un bug volontaire, mais ca ne donne pas les resultats que tu envoies
 
Dernière édition:

Monique

Nous a quitté
Repose en paix
Re : Aide à la saisie des heures

Re,

la modif de "." par ":"
Non, c'est ".." par ":"
Deux points ou deux virgules

la modif de ( ) se fait dans toutes les cellules,
Chez moi aussi et c'est logique, c'est ce que l'on cherche à obtenir
Tu parles bien du correcteur d'orthographe ?

et pour les entiers, si je fais "8..", ça me donne "8::",
C'est normal, si tu as fait "." à remplacer par ":"

et "8" me donne "8"...
Là, je ne comprends pas
8 donne 8 en principe
8.. donne 08:00
 

Guiv

XLDnaute Occasionnel
Re : Aide à la saisie des heures

RE,

Autant pour moi, Wilfried!!! A force de bidouiller des essais de partout, j'avais laissé traîné une correction d'orthographe malencontreuse ("," par ":") qui fichait tout sens dessus dessous... Maintenant, ça marche super, et je m'en veux de ne pas avoir trouvé ça tout seul! Ce que je n'aurait sûrement pas trouvé, c'est l'histoire de "Application.EnableEvents = Not Application.EnableEvents" avant et après le code. Peux-tu m'expliquer à quoi ça sert (effectivement ça ne fonctionne pas sans cette ligne).

Monique : : effectivement, ça marche super aussi!

Grand merci à tous les deux et bon dimanche

Guiv
 

wilfried_42

XLDnaute Barbatruc
Re : Aide à la saisie des heures

re:

Quand tu fais une saisie dans une cellule, ca declanche l'interruption worksheet_change
Quand tu mets à jour une cellule, ca declanche aussi une interruption comme la saisie puisque l'on modifie la cellule

application.enableevents = false rend inoperent l'interruption d'evennement
ensuite mise à jour de la cellule
epplication.enableevents = true libere l'interruption d'evennement pour ls saisie suivante

application.enableevents = not application.enableevents inverse la propriete true et false (comme je suis faineant, je fais des copier coller sans modifier la ligne)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom