Transformer 2210 en 22:10 (heur)

Résolu
chix88 Messages postés 292 Statut Membre -  
 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?

--
La vitesse de lumière étant supérieure à la vitesse du son ; bien des gens paraisse brillants jusqu’au moment où ils ouvre la bouche

4 réponses

  1. 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
  2. chix88 Messages postés 292 Statut Membre 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
    1. 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
      1. chix88 Messages postés 292 Statut Membre 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
      2. Utilisateur anonyme > chix88 Messages postés 292 Statut Membre
         
         
        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
  3. Gyrus Messages postés 3360 Statut Membre 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
    1. chix88 Messages postés 292 Statut Membre 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
      1. Gyrus Messages postés 3360 Statut Membre 526 > chix88 Messages postés 292 Statut Membre
         
        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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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