Formater une plage en horaire

[Résolu/Fermé]
Signaler
-
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
-
Bonjour a toutes et tous, forum bonjour



Excel 2007 - VBA

Je souhaiterai svp formater une plage de cellules (F2:F16) sous un format spécial

je voudrais que lorsque je tapes en (F2 ou F3 etc etc) Ex: 1255 que cela écrive directement sous

ce format 12h 45 et si il y a un zéro devant 01h 44 >>> écrire 1h 44 en supprimant le zéro

Où autre solution en VBA, je vous remercie pour votre aide et votre savoir partagé.

Bonne après midi a tous

Cdlt Ray

4 réponses

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 699
Bonjour Ray,

Dans le module de la feuille, essaies :
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Intersect(Target, [F2:F16]) Is Nothing Then Exit Sub
  If Not IsNumeric(Target.Value) Then Exit Sub
  Application.EnableEvents = False
  Target.Value = (Int(Target.Value / 100) / 24) + _
                 ((Target.Value Mod 100) / (24 * 60))
  Application.EnableEvents = True
  Target.NumberFormatLocal = "hh""h""mm;@"
End Sub
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 699
Oups .....
pour supprimer le 0 de 0144, il faut remplacer :
  Target.NumberFormatLocal = "hh""h""mm;@"
.
par
  Target.NumberFormatLocal = "h""h""mm;@"
.
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 699
Bonjour Ray

Je me suis encore fais piéger par une bizarrerie d'Excel !!!
J'avais oublié que la fonction IsNumeric() considère qu'une cellule vide contient un zéro !

Voici le code modifié :
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Intersect(Target, [F2:F16]) Is Nothing Then Exit Sub
  If Not IsNumeric(Target.Value) Then Exit Sub
  If Target.Formula = "" Then Exit Sub
  Application.EnableEvents = False
  Target.Value = (Int(Target.Value / 100) / 24) + _
                 ((Target.Value Mod 100) / (24 * 60))
  Application.EnableEvents = True
  Target.NumberFormatLocal = "h""h""mm;@"
End Sub
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Salut Patrice33740,

Tout d'abord merci de t'etre interresser a mon post, et merci pour le code.

j'ai essayer ca fonctionne bien, mais quand je tape 0155 il m'écrit bien 1h55 ça OK

mais en supposant que je me sois tromper alors j'efface la cellule et ca me laisse des zéros ecrit comme suit 0h00

quand j'efface je souhaiterai svp effacer toute la cellule et entrer une nouvelle valeur

Encore merci pour ton aide

Cordialement Ray
Salut Patrice33740,

Merci bien pour ta réponse et pour la modification.

ça fonctionne bien comme souhaiter et je te remercie

beaucoup pour ton aide que j'ai beaucoup apprécier.

Je clos donc le sujet avec encore pleins de merci, bonnnes

vacances si tu part et a bientot sans doute.

Bye, Bien cordialement Raymond
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 699
De rien, au plaisir de te relire sur le Forum.

Cordialement
Patrice (actuellement en vacances!!!)