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

Autres Saisi des heures supérieur à 9999h

AbdelkaderKimou

XLDnaute Nouveau
Slt
je souhaite savoir comment saisir des heures supérieures à 9999h tout en la maintenant sous le format exp: 23/10/1908 04:50:05
aussi appliquer des formules de sommation.

Merci
 

Patrice33740

XLDnaute Impliqué
Bonjour,

En laissant la cellule au même format, je vois 2 solutions pour saisir des heures supérieures à 9999 :
1) Saisir des jours et des heures, mais c'est compliqué, il faut faire la conversion en jours et heures.
2) Saisir une formule. c'est à peine plus long et ça présente 2 avantages :
- le nombre d'heures n'est pas limité
- le nombre d'heures est lisible dans la barre des formules
Par exemple pour saisir 18569 heures, il suffit de saisir :
=18569/24
 

Patrice33740

XLDnaute Impliqué
Pas tout compris
La question est pourtant simple :
je souhaite savoir comment saisir des heures supérieures à 9999h tout en la maintenant sous le format exp: 23/10/1908 04:50:05

Pour saisir des heures jusqu'à 9999, il suffit de saisir 9999:0 ou 9999:0:0 dans la cellule quel que soit le format de la cellule (hors Texte), ici elle est format jj/mm/aaaa hh:mm:ss et il veut conserver ce format. En saisissant 9999:0 on obtient donc 19/02/1901 15:00:00 dans cette même cellule.
Mais à partir de 10000:0 l'interpréteur de saisie considère qu'il s'agit d'un texte et garde 10000:0 d'où la question ....
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Slt
je souhaite savoir comment saisir des heures supérieures à 9999h tout en la maintenant sous le format exp: 23/10/1908 04:50:05
aussi appliquer des formules de sommation.

Merci
pourquoi utiliser un format de date pour visualiser des heures ???
Comme déjà dit précédemment
"By Design©" la saisie est limitée à 9999:59:59

Spécifications et limites relatives aux feuilles de calcul et aux classeurs
FonctionnalitéLimite maximale

Date la plus récente autorisée pour les calculs31 décembre 9999
Durée maximale pouvant être entrée9999:59:59

cependant le format [h]:mm:ss n'est pas limité

contournement

effectuer les saisies en horaire décimal (heure, centiéme)
les calculs standards (sommation, différence, multiplication, division) restent inchangés
pour un résultat en heure,minute, seconde multipliez par "1:0" ou divisez par 24

 

JM27

XLDnaute Barbatruc
bonsoir
Comme dit Modeste Gee-Dee
pourquoi utiliser un format de date pour visualiser des heures ???
Comme déjà dit précédemment
"By Design©" la saisie est limitée à 9999:59:59
Et c'est bien pour cela que j'ai dit pas tout compris , n'en déplaise à certains .( mais moi j'ai pas la science infuse
 
Dernière édition:

Patrice33740

XLDnaute Impliqué
On parle ici de saisie dans une cellule ....
Quel que soit le format utilisé, y compris [h]:mm:ss, la durée maximale pouvant être saisie directement dans une cellule est exactement 9999:59:59,999 (le minimum est 00:00:00,001)
Le "pourquoi" du format utilisé n'a finalement aucune importance. Il s'agit de saisir un nombre d'heures supérieur 9999

La seule "alternative" pour saisir un nombre supérieur, assimilable à des heures (entières), est de saisir une formule du type :
=123456/24
Finalement entre saisir 9999: et saisir =9999/24 il n'y a que 3 caractères supplémentaires pour un résultat identique.
On pourrait aussi ajouter des minutes =... + 30/(24*60), voire des secondes et des millièmes de secondes mais ça devient très lourd ....
On ne peut pas utiliser les fonctions TEMPS et TEMPSVAL, elles sont modulo 24:00:00.

Il y a peut-être d'autres alternatives (sans utiliser de cellule supplémentaire).....
EDIT : comme celle de Modeste :
=123456*"1:"
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_change(ByVal Target As Range)
If Intersect(Target, [A:A]) Is Nothing Or Target.Count > 1 Then Exit Sub
Dim s, ub As Integer, h As Variant
s = Split(Target, ":")
ub = UBound(s)
If ub > 0 Then h = Abs(Int(Val(s(0)))) / 24 + Abs(Int(Val(s(1)))) / 1440
If ub > 1 Then h = h + Abs(Int(Val(s(2)))) / 86400
If h <> "" Then Target = h
End Sub
Elle s'exécute automatiquement quand on entre des données en colonne A.

A+
 

Pièces jointes

  • Heures VBA(1).xlsm
    16.9 KB · Affichages: 7

Patrice33740

XLDnaute Impliqué
Bonjour le fil

Une autre macro, colonne A au format jj/mm/aaaa hh:mm:ss
(accepte la saisie matricielle et le collage spécial / valeurs sur plusieurs cellules)
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, c As Range, t, m$, s$
  Set r = Intersect(Target, Columns("A"))
  If Not r Is Nothing Then
    For Each c In r.Cells
      If TypeName(c.Value) = "String" Then
        t = Split(c.Value, ":")
        Select Case UBound(t)
          Case 1
            m = Format(Val(t(1)) Mod 60, "00")
            If t(0) = Val(t(0)) And Right("00" & t(1), 2) = m Then
              c.Value = Val(t(0)) / 24 + Val(t(1)) / 1440
            End If
          Case 2
            m = Format(Val(t(1)) Mod 60, "00"): s = Format(Val(t(2)) Mod 60, "00")
            If t(0) = Val(t(0)) And Right("00" & t(1), 2) = m And Right("00" & t(2), 2) = s Then
              c.Value = Val(t(0)) / 24 + Val(t(1)) / 1440 + Val(t(2)) / 86400
            End If
        End Select
      End If
    Next c
  End If
End Sub
 

Pièces jointes

  • Heures.xlsm
    16.8 KB · Affichages: 2

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…