saisir des heures sans les :

  • Initiateur de la discussion Initiateur de la discussion pascal21
  • 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 !

pascal21

XLDnaute Barbatruc
bonjour j'ai une appli où je saisie principalement des heures
et je cherche le moyen d'écrire les heures sans les : dans certaines cellules
afin de gagner du temps
cela donnerait à la saisie
1245
12:45 dans la cellule après traitement par macro
attention il faut impérativement que cela soit au format heures et non du texte car il y a des calculs sur ces cellules
merci de votre aide
 
Re : saisir des heures sans les :

Bonjour le fil, bonjour le forum,

Peut-être avec la macro événementielle Change ci-dessous :

Code:
Private TEST As Boolean 'déclare la variable TEST

Private Sub Worksheet_Change(ByVal Target As Range)
Dim V As Double 'déclare la variable V (Valeur)
Dim H As Byte 'déclare la variable H (Heure)

If IsNumeric(Target.Value) = False Then Exit Sub 'si la valeur n'est pas numérique, sort de la procédure
If Target.Cells.Count > 1 Then Exit Sub 'si selection multiple, sort de la procédure
If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
If TEST = True Then Exit Sub 'si TEST est [VRAI], sort de la procédure (pour éviter la boucle sur l'événement Change)
H = IIf(CInt(Target.Value) < 1000, CByte(Left(Target.Value, 1)), CByte(Left(Target.Value, 2))) 'définit l'heure H en selon inférieure ou supérieure à 10
V = H / 24 + CByte(Right(Target.Value, 2)) / 60 / 24 'définit la variable V
TEST = True 'définit la variable TEST
Target.Value = Format(V, "hh:mm") 'revoie la valeur V dans la cellule
TEST = False 'redéfinit la variable TEST
End Sub
 
Re : saisir des heures sans les :

Bonjour

j'ai l'impression que cela fonctionne correctement avec le format personnalisé 00":"00. J'ai fait une différence sur deux cellules formatées ainsi, et le résultat était correct.

@ plus

@ Robert : T'étais sur quel bateau la semaine passée ? Tu avais le choix 🙂
 
Dernière édition:
Re : saisir des heures sans les :

Bonjour Pascal,

Par exemple pour traiter les cellules de la colonne A :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, flag As Boolean
Set r = Intersect(Target, [A:A], Me.UsedRange)
If r Is Nothing Then Exit Sub
r.NumberFormat = "General"
For Each r In r 'si entrées multiples (copier-coller)
  flag = False
  If r Like "#" Or r Like "##" Then r = r & ":": flag = True
  If r Like "###" Or r Like "####" Then r = Left(r, 2) & ":" & Mid(r & 0, 3, 2): flag = True
  If flag Then r.NumberFormat = "hh:mm"
Next
End Sub
Edit : pas rafraîchi, salut tout le monde.

@ Robert vraiment très heureux de te revoir, cela faisait longtemps.

A+
 
Dernière édition:
Re : saisir des heures sans les :

Re,

Bah ma solution précédente ne permettait pas d'obtenir toutes les heures... Alors ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, x$
Set r = Intersect(Target, [A:A], Me.UsedRange)
If r Is Nothing Then Exit Sub
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)
    r.NumberFormat = "hh:mm"
  End If
Next
End Sub
A+
 
Re : saisir des heures sans les :

Re,

Ah et puis il faut les Application.EnableEvents pour le cas ou l'on entre 0...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, x$
Set r = Intersect(Target, [A:A], 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)
    r.NumberFormat = "hh:mm"
  End If
Next
Application.EnableEvents = True
End Sub
A+
 
Re : saisir des heures sans les :

bonjour à tous et merci pour vos nombreuses reponses
je suis en train de tester le code de Job75 qui à l'air de fonctionner parfaitement
le problème est à cause de cellules protégées dans les colonnes où je dois saisir les heures ça coince
il me faut donc désignéer les cellules concernées par le code
par contre j'ai toujours coincé avec les selection de cellules en vba
Code:
Set r = Intersect(Target, [A:A], Me.UsedRange)
par les cellules T9, T10, v9, V10,t17,t18 etc...
j'ajoute si cela est important que ce sont des cellules fusionnées par exemple t9 est en réalité t9:u9 etc...
 
Dernière édition:
Re : saisir des heures sans les :

je viens d'essayer
Code:
Set r = Range("t9,v9")
mais si ça fonctionne bien dans ces deux cellules désignées si je rentre une valeur dans une autre cellule c'est le bazar ça change la valeur des cellules désignées
 
Re : saisir des heures sans les :

Re,

Si la feuille est protégée, les cellules où l'on peut entrer des données sont forcément déverrouillées.

Il n'y a donc pas lieu de préciser où elles se trouvent :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, x$
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)
    r.NumberFormat = "hh:mm"
  End If
Next
Application.EnableEvents = True
End Sub
Bonne fin de soirée.

A+
 
- 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

  • Question Question
Microsoft 365 heures sans les :
Réponses
2
Affichages
794
Retour