Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

vba afficher un "h" à la place du ":" pour les heures

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 !

pascal21

XLDnaute Barbatruc
bonjour le forum
job 75 m'avait fait ce bout de code pour entrer les heures sans avoir à taper sur le :
dans la cellule concernée l'heure s'affiche ensuite avec le :
mais je cherche le moyen de remplacer le : par un "h"
j'ai essayé plusieurs modifs sur le code mais quand le "h" s'inscrit il n'est pas considéré comme un format heure
j'ai essayé aussi clic droit/format de la cellule/format personnalisé hh"h"mm mais çà ne fonctionne pas sur les cellules concernées par la macro alors que çà fonctionne sur d'autres cellules
que modifier pour que çà fonctionne avec cette macro?
merci de votre aide
Code:
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim r As Range, x$
Set r = Intersect(Target, [t6:x7,t11:x12,t16:x17,t21:x30,t33:x34])
''Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
r.NumberFormat = "General"
For Each r In r 'si entrées multiples (copier-coller)
  If r Like "#" Or r Like "##" Or r Like "###" Or r Like "####" Then
    x = Format(r, "0000")
  r = Left(x, 2) & ":" & Mid(x, 3)      ' ici j'ai remplacé le : par h mais ce n'est plus du format heure
    r.NumberFormat = "hh:mm"      'j'ai essayé ici hh"h"mm mais çà fonctionne pas
  End If
Next
ActiveSheet.Protect
Application.EnableEvents = True
Application.ScreenUpdating = True
 
bonjour,

ben, soit c'est un format heure avec : et tu pourras l'utiliser dans tes calculs
soit tu remplaces le : par un h, mais avant de pouvoir l'utiliser dans les calculs, il faudra convertir ce texte en hh:mm:ss
en utilisant temps(hh;mm;ss) et les formules de conversion de texte gauche, droite et stxt
tout cela suppose évidemment que ton temps texte soit toujours du même format
 
Bonjour Eric 🙂

J'ai testé comme ceci

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
x = #12:45:00 PM#
[D4] = x
[D4] = Replace(Left(x, 3), ":", "h") & Right(x, 2)
Cancel = True
End Sub

EDIT: bonjour Bertrand 🙂
 
Bonjour.
VB:
Sub t()
Dim H#
H = [B2].Value
If H > 1 Then [B2].Value = TimeSerial(H \ 100, H Mod 100, 0)
[B2].NumberFormat = "hh\h mm"
End Sub
Pour éviter d'avoir à ne pas oublier de doubler les doubles guillemets.
 
Dernière édition:
Pour couvrir d'autre cas :
VB:
Dim H As Variant
With [B2]
   H = .Value
   Select Case VarType(H)
      Case vbDouble: If H > 1 Then H = TimeSerial(H \ 100, H Mod 100, 0)
      Case vbString: H = TimeValue(Replace(H, "h", ":")): End Select
   .Value = H: .NumberFormat = "hh\h mm": End With
 
- 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
442
  • Question Question
Microsoft 365 heures sans les :
Réponses
2
Affichages
756
Réponses
33
Affichages
2 K
Réponses
4
Affichages
1 K
Réponses
1
Affichages
842
Réponses
13
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…