Transformer 2210 en 22:10 (heur)

Résolu
chix88 Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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
 
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   Statut Membre Dernière intervention   14
 
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
 
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   Statut Membre Dernière intervention   14 > Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
 
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   Statut Membre Dernière intervention   526
 
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   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention   526 > chix88 Messages postés 262 Date d'inscription   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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