Excel convertir 1234 en 12:34

Résolu/Fermé
jojo_lebarjo - 5 avril 2023 à 14:26
jojo_lebarjo Messages postés 2 Date d'inscription mercredi 5 avril 2023 Statut Membre Dernière intervention 19 avril 2023 - 19 avril 2023 à 16:19

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

A voir également:

5 réponses

via55 Messages postés 14433 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 1 juillet 2024 2 714
5 avril 2023 à 14:42

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
yclik Messages postés 3623 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 26 juin 2024 1 491
5 avril 2023 à 15:37

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
Raymond PENTIER Messages postés 58520 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 1 juillet 2024 17 141
6 avril 2023 à 02:23

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
jojo_lebarjo Messages postés 2 Date d'inscription mercredi 5 avril 2023 Statut Membre Dernière intervention 19 avril 2023
13 avril 2023 à 15:48

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

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

Posez votre question
jojo_lebarjo Messages postés 2 Date d'inscription mercredi 5 avril 2023 Statut Membre Dernière intervention 19 avril 2023
19 avril 2023 à 16:19

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