XL 2013 format de cellule ou pas ?

  • Initiateur de la discussion Initiateur de la discussion starz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

starz

XLDnaute Occasionnel
Bonjour,
Je souhaiterai connaitre la méthode pour afficher dans une cellule ma saisie 023015 sous cette forme :
02:30,15 et ça de manière automatique ?

ce sont des min seconde et centième. J'ai essayé le format de cellule mm:ss,00 mais lorsque je saisie 023015 il me passe en heure directement ?

merci pour votre aide
 
Bonjour,

Pour saisir plus vite les heures dans Excel

( taper .. sur le pavé numérique à la place de : )
Barre de menu - Outils - Options - Onglet "Orthographe", cliquer sur "Options de correction automatique"
Er remplacer .. par :

Par exemple vous aller alors taper : 1..23.12 et cela affichera 01:12,12
Mettre le format personnalisé dans la cellule mm:ss,00
 

Pièces jointes

Bonjour le fil, le forum,

En VBA on peut entrer la formule dans la zone des saisies (ici la colonne A) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sep$, c As Range
sep = Mid(1 / 10, 2, 1) 'séparateur décimal de l'ordi
Application.EnableEvents = False
On Error Resume Next
For Each c In Intersect(Target, Range("A2:A" & Rows.Count), UsedRange) 'si entrées multiples (copier-coller)
  If c <> "" And Not c.HasFormula Then c = "=--TEXT(" & c & ",""00\:00\" & sep & "00"")"
  'sur Excel 2007 et versions suivantes on peut utiliser :
  'If c <> "" And Not c.HasFormula Then c = "=IFERROR(--TEXT(" & c & ",""00\:00\" & sep & "00""),"""")"
Next
Application.EnableEvents = True
End Sub
J'utilise la formule de Modeste geedee mais avec -- (qui pèse 2 octets) au lieu de 1* (4 octets).

Fichiers joints pour toutes versions Excel.

Bonne journée.
 

Pièces jointes

Bonsour®
Bonjour le fil, le forum,

En VBA on peut entrer la formule dans la zone des saisies (ici la colonne A) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sep$, c As Range
sep = Mid(1 / 10, 2, 1) 'séparateur décimal de l'ordi
Application.EnableEvents = False
On Error Resume Next
For Each c In Intersect(Target, Range("A2:A" & Rows.Count), UsedRange) 'si entrées multiples (copier-coller)
  If c <> "" And Not c.HasFormula Then c = "=--TEXT(" & c & ",""00\:00\" & sep & "00"")"
  'sur Excel 2007 et versions suivantes on peut utiliser :
  'If c <> "" And Not c.HasFormula Then c = "=IFERROR(--TEXT(" & c & ",""00\:00\" & sep & "00""),"""")"
Next
Application.EnableEvents = True
[[CODE]End Sub
J'utilise la formule de Modeste geedee mais avec -- (qui pèse 2 octets) au lieu de 1* (4 octets).

Fichiers joints pour toutes versions Excel.

Bonne journée.
🙄 tssss... tsssss....
histoire d'octets en mémoire ...😛
il existe déjà une variable qui renseigne sur le séparateur décimal
Code:
 If c <> "" And Not c.HasFormula Then c = Evaluate("=--TEXT(" & c & ",""00\:00\" & Application.DecimalSeparator & "00"")")
 
Re Modeste geedee,

Si je teste avec c.HasFormula c'est pour que la macro ne touche pas aux formules entrées...

Si l'on utilise Evaluate ce test n'est plus nécessaire mais voyez ce qui se passe si on revalide.

Et dans ce cas le séparateur décimal à utiliser est toujours le point :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.EnableEvents = False
On Error Resume Next
For Each c In Intersect(Target, Range("A2:A" & Rows.Count), UsedRange) 'si entrées multiples (copier-coller)
  If c <> "" Then c = Evaluate("--TEXT(" & c & ",""00\:00\.00"")")
  'sur Excel 2007 et versions suivantes on peut utiliser :
  'If c <> "" Then c = Evaluate("IFERROR(--TEXT(" & c & ",""00\:00\.00""),"""")")
Next
Application.EnableEvents = True
End Sub
Fichiers (2).

A+
 

Pièces jointes

Bonsour®
Re Modeste geedee,

Si je teste avec c.HasFormula c'est pour que la macro ne touche pas aux formules entrées...
Oui OK entièrement d'accord.😉
Si l'on utilise Evaluate ce test n'est plus nécessaire mais voyez ce qui se passe si on revalide.
c'est parceque la valeur n'est pas conforme à la saisie attendue :
dans une cellule ma saisie 023015 sous cette forme :
02:30,15 et ça de manière automatique ?

Job75 à dit:
Et dans ce cas le séparateur décimal à utiliser est toujours le point :
??? je doute ???😳
EVALUATE utilise la syntaxe "feuille de calcul US", mais le format à utiliser reste un format local
Evaluate("TEXT(" & c & ",""00\:00\,00"")")
cependant on précisera le format à afficher via VBA :
Selection.NumberFormat = "mm:ss.00;@"
et dans ce cas c'est VBA qui se charge d'afficher le bon séparateur local !!!
va comprendre ???😛😵🙄

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.EnableEvents = False
On Error Resume Next
For Each c In Intersect(Target, Range("A2:A" & Rows.Count), UsedRange) 'si entrées multiples (copier-coller)
  If Not (c.HasFormula) Then
        If IsNumeric(c) Then
              If c >=1 And c < 10^8 Then c.Value = Evaluate("TEXT(" & c & ",""00\:00\:00\,00"")"): c.NumberFormat = "[mm]:ss.00"
        End If
  End If
Next
Application.EnableEvents = True
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
1 K
Retour