Transformer 2210 en 22:10 (heur)

Résolu/Fermé
chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022 - 14 oct. 2016 à 23:53
 Utilisateur anonyme - 16 oct. 2016 à 14:49
Bonsoir
je tape souvent des heur dans mon document excel et je souhaite savoir si c possible que excel me remplace automatiquement les ":"
donc si j'ecrit 1000 il sauras que c'est 10:00
1452 <=> 14:52
es possible?

4 réponses

Utilisateur anonyme
15 oct. 2016 à 00:31
Bonjour chix88,

Note que c'est le signe deux-points ( : ) qui permet à Excel de
différencier une heure (10:00 ou 14:52) d'un nombre (1000
ou 1452). Sais-tu que tu peux saisir 9: pour avoir 09:00 ?

Ce que tu proposes est déconseillé, même si tu dois saisir plusieurs
heures ; cependant, c'est tout à fait possible à condition de saisir
toujours 4 chiffres, et si tu donnes l'emplacement exact des cellules
où tu saisis tes heures, une macro événementielle pourra le faire.

Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Sinon, à te lire pour connaître ta plage de saisie
des heures ; exemple : B5:B200

Cordialement.  😊
 
0
chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022 14
15 oct. 2016 à 01:02
merci pour votre intervention
je crois que je viens de trouver une solution a mon probleme , reste a me confirmer si c'est toujours déconseiller de le faire ou non.
j'ai trouver sur un autre forum un cas pareil ou il veut changer des date un chiffre en date (convertir est de type 070205 (pour le 5 février 2007)) le lien en cas ou quelqu'un aura besoin
https://forum.ubuntu-fr.org/viewtopic.php?id=1367571
la fonction est

=DATE(GAUCHE(A1;2);STXT(A1;3;2);DROITE(A1;2))

j'ai donc changer la fonction DATE avec la fonction TEMPS ce qui donne dans mon cas
=TEMPS(GAUCHE(I57;2);STXT(I57;3;2);)

le seul probleme c'est que je dois crée une autre colonne pour taper
moi je voulais ecrire le 2210 dans une colonne et avoir le résultat 22:10 dans la même colonne
si c'est fesable merci , sinon je me contenterais de cette solution
0
Utilisateur anonyme
15 oct. 2016 à 12:18
Bonjour chix88,

J'ai bien lu ton message en entier, mais je n'ai vu nulle part l'indication
que je t'avais pourtant bien demandé explicitement de préciser !

Dans mon message #1, j'ai écris au 2ème paragraphe : « si tu donnes
l'emplacement exact des cellules où tu saisis tes heures, une macro
événementielle pourra le faire. »

Dans le même message, j'ai écris à la fin : « à te lire pour connaître
ta plage de saisie des heures ; exemple : B5:B200 ».

Comme tu n'as pas répondu, je te laisse voir avec la solution du
message #3 de Gyrus (que je salue) ; il te faudra adapter la plage
A2:A100 (sauf si par une grande coïncidence c'est bien celle-là !).

Comme je sais que Gyrus est un programmeur VBA très compétent,
je n'ai même pas besoin de vérifier sa solution pour savoir qu'elle va
marcher. Je considère donc ce problème comme réglé : tu pourras
le remercier, puis aller en haut de page pour cliquer sur « Marquer
comme résolu ».

Cordialement.  😊
 
0
chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022 14 > Utilisateur anonyme
15 oct. 2016 à 23:31
merci pour l’énorme intérêt que tu porte a ma question et je m'excuse si j'ai pas répondu a tes attente.
pour la plage des heur je n'ais pas une fixe, je travail dans un tableau qui s'agrandi chaque jour , du coup , ma plage et du genre (C2;C?)
si ça peut vous aider a mieux cerner mon problem je t'envoi mon document
https://www.cjoint.com/c/FJpvx4lo3Hq
merci et je m'excuse encor
0
Utilisateur anonyme > chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022
16 oct. 2016 à 14:49
 
Bonjour chix88,

Je te laisse lire la réponse #7 de Gyrus et la réponse #8 de eriiic ;
ces 2 solutions fonctionnent parfaitement ; c'est donc inutile
que je te donne une 3ème solution !

Cordialement.  😊

PS : Bonjour à Gyrus et eriiic en passant.  😊
 
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
15 oct. 2016 à 08:15
Bonjour,

Voici une proposition qui utilise la procédure évènementielle WorkSheet.Change pour modifier la saisie dans la plage A2:A100.

Pour voir le code :
Clic droit sur l'onglet "Feuil1" puis visualiser le code.
https://www.cjoint.com/c/FJpgoG54pj8
A+
0
chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022 14
15 oct. 2016 à 23:25
merci énormément pour votre reponse , ca marche nickel avec une plage de 'C2:C100'
cependant et vue que je travail dans un tableau et que j'ajoute des ligne a chaque fois automatiquement avec le buttons TAB je ne pense pas que ce sera utile apres la case C100 ; j'ai essayer avec (Target, Range("C")) mais ca marche pas ,
une astuce?
mon document et ci joint
https://www.cjoint.com/c/FJpvx4lo3Hq
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > chix88 Messages postés 262 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 novembre 2022
16 oct. 2016 à 00:13
Bonjour,

Il suffit d'intégrer à la procédure la détermination de la dernière ligne à prendre en compte.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
If Target.Count > 1 Then Exit Sub
DerLig = Range("C" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("C2:C" & DerLig)) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value <> "" Then
Application.EnableEvents = False
If Target.Value >= 0 And Target.Value <= 2400 Then
Target = Int(Target.Value / 100) / 24 + (Target.Value Mod 100) / 1440
Target.NumberFormat = "h:mm"
Else
Target = ""
End If
Application.EnableEvents = True
End If
End If
End Sub

A+
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 16/10/2016 à 00:34
Bonjour,

une autre proposition proche de celle de gyrus.
Pas de plage à définir, toute la feuille est supervisée mais on peut restreindre à une plage.
Une cellule n'est traitée que si on rencontre le format h:mm ou hh:mm et que ce soit une saisie numérique (les formules ne sont donc pas impactées) de 4 chiffres maxi, non déjà au format horaire.
Mettre un format horaire reconnu définit donc que la cellule doit être traitée.
La saisie est possible aux formats : mm, hmm, hhmm, h:mm, hh:mm
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl_supervision As Range, c As Range
    Set pl_supervision = Cells ' mettre une plage si on veut restreindre
    
    On Error Resume Next
    Set pl_supervision = Intersect(Target, pl_supervision.SpecialCells(xlCellTypeConstants, xlNumbers))
    On Error GoTo 0
    If pl_supervision Is Nothing Then Exit Sub
    For Each c In pl_supervision
        If Left(c.NumberFormat, 4) = "h:mm" Or Left(c.NumberFormat, 5) = "hh:mm" Then
            If InStr(c, ":") = 0 And Len(c) < 5 Then
                Application.EnableEvents = False
                c = TimeValue(Left(Format(c, "0000"), 2) & ":" & Right(c, 2))
                Application.EnableEvents = True
            End If
        End If
    Next c
End Sub

eric

PS: on peut coller une plage
En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0