Excel convertir 1234 en 12:34

Résolu
jojo_lebarjo -  
jojo_lebarjo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je cherche un moyen de passer de #### à ##:##.

Actuellement je saisis mes heures de travail au format ##:##, mais quelques fois j'oublie les : et vous imaginez bien que ça coince un peu.

Du coup je cherche à pouvoir taper mes heures au format #### et que cela le corrige en ##:##.

J'ai essayé le formatage conditionnel, le format de cellule et une formule -> pas moyen.

Est-ce que quelqu'un aurait une idée?

Merci d'avance pour votre aide.


Windows / Firefox 111.0

5 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     

    Bonjour

    On peut faire la conversion à l'aide d'une macro dès l'entrée dans une cellule  à condition de connaître toutes les cellules dans lesquelles peuvent être rentrées des heures

    Le plus simple sans macro est d'utiliser la validation de données qui t'oblige à rentrer les heures au format heure :

    Pour chaque cellule ou plage de cellule devant recevoir une heure aller dans le ruban dans Données - Outils de données - Validation de données et pour Autoriser  choisir Heure


    Cdlmnt

    Via


    0
  2. yclik Messages postés 3874 Date d'inscription   Statut Membre Dernière intervention   1 609
     

    Bonjour

    une proposition

    si saisie en A2

    =SI(NBCAR(A2)=3;TEMPS(GAUCHE(A2;1);DROITE(A2;2);0);TEMPS(GAUCHE(A2;2);DROITE(A2;2);0))
    0
  3. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     

    Bonjour.

    Pour transformer un nombre #### saisi dans la cellule A1 en date ##.## utiliser la formule

    =CNUM(GAUCHE(A1;2)&":"&DROITE(A1;2))

    Mais pour éviter d'appliquer cette modification à une saisie correcte ##.## il faut ajouter un test

    =SI(STXT(A1;3;1)=":";A1;CNUM(GAUCHE(A1;2)&":"&DROITE(A1;2)))


    0
  4. jojo_lebarjo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     

    Merci pour vos réponses.

    Raymond et Yclik, vos formule transforme mon 1315 en 0.55.... et il faut formater la cellule pour afficher 13:15

    Mais j'ai fini par trouver un début de solution!
     

    =CONCATENER(GAUCHE(E1;2);":";STXT(E1;3;2))
    
    ou
    
    =CONCATENER(STXT(F1;1;2);":";STXT(F1;3;2))

    Ça fonctionne très bien. 1315 se transforme en 13:15. Et le plus beau, c'est que la fonction de calcul fonctionne, même pour les heures.

    Maintenant reste à trouver comment utiliser cette fonction pour automatiser ça pour un document...

    Merci encore pour votre aide, cela m'a permis d'avancer.

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jojo_lebarjo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     

    Re,

    Voilà, voilà.

    Après plusieurs essais j'ai fini par trouvé une solution:

    Sub FormatageHeure()
        
     'variable pour formater le texte
     Dim entree As Integer
     Dim heure As Integer
     Dim minute As Integer
     Dim r1 As Range
     Dim r2 As Range
     
     'selection de la colonne B
     Range("B2").Select
     
     'sélectionne la cellule
     Set r1 = Selection.Offset(0, 0)
      
      'boucle pour réecrir le texte #### en ##:##
    Boucle:
     If Not IsEmpty(r1) Then
     ActiveCell.Offset(0, 0).Select
      entree = ActiveCell.Value
      heure = Left(entree, 2)
      minute = Right(entree, 2)
      ActiveCell.Value = heure & ":" & minute 'excel attribue automatiquement le format hh:mm au contenu.
      ActiveCell.Offset(1, 0).Select 'on sélectionne la cellule suivante
      Set r1 = Selection.Offset(0, 0) 'sans ça, la boucle ne s'arrête jamais et remplis les cellules suivantes. Mais alors le Not isempty....
      GoTo Boucle
     Else
     
     End If
     
     'la même chose pour la colonne C
     Range("C2").Select
     
     Set r2 = Selection.Offset(0, 0)
     
    BoucleC:
     If Not IsEmpty(r2) Then
     ActiveCell.Offset(0, 0).Select
      entree = ActiveCell.Value
      heure = Left(entree, 2)
      minute = Right(entree, 2)
      ActiveCell.Value = heure & ":" & minute
      ActiveCell.Offset(1, 0).Select
      Set r2 = Selection.Offset(0, 0)
      GoTo BoucleC
     Else
     
     'Test pour voir si boucles correctes
     'MsgBox "Terminée"
     End If
     
     'Test pour voir les valeurs des variables
     'MsgBox heure & minute
    
    End Sub
    

    En espérant que ça puisse aidé.

    0