Format horaire et calcul d'heures

Pilpoil

XLDnaute Nouveau
Bonjour à tous,

Nouveau sur ce forum et d'un niveau de débutant, j'y ai effectué des recherches mais n'ai trouvé qu'une partie de réponse.

Sur un tableau qui me sert à calculer un temps de présence, j'utilise actuellement 3 cellules :
En A1, j'indique une heure de début au format horaire 10:00
En A2, j'indique une heure de fin (sur la même journée calendaire) au format horaire 14:00
En A3, j'obtiens très simplement le résultat (A2-A1) sous la forme 4:00

Je rentrais jusqu'à présent les horaires en indiquant les ":" entre les heures et les minutes.
J'ai donc cherché à me simplifier la tâche pour n'avoir qu'à indiquer les heures sous la forme 1000.
Grâce à ce forum, j'ai trouvé la solution de Dull (https://www.excel-downloads.com/threads/cherche-code-vba-pour-format-heure.83964/) très pratique en utilisant le format personnalisé ##\:## :)
Sauf que... maintenant le calcul horaire ne fonctionne plus :(
Si je rentre 1000 en A1 et 1400 en A2, la soustraction A2-A1 me renvoie la valeur 0:00 au lieu de 4:00

Auriez-vous une idée pour retrouver la bonne valeur une fois le calcul automatique effectué :confused:
 

R@chid

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Salut et bienvenu sur XLD,
chez moi ca fonctionne correctement avec format personalise : ##\:##
un petit fichier joint sera plus explicatif dans ton cas.
Aller en mode avacance ==> Gerer les pieces jointe
@ te relire
 

JHA

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Bonjour à tous,

Je pese qu'en "A3" ton format de cellule est en heure et le résultat réel est 400 non "4:00" donc pour éviter les erreurs, il serait mieux, je pense, de noter en "A3":

Code:
=SI(OU(A1="";B1="");"";SI(NBCAR(A1)=4;(GAUCHE(B1;2)&":"&DROITE(B1;2))-(GAUCHE(A1;2)&":"&DROITE(A1;2));))

ou si tu as 3 chiffres en A2 ex:923
Code:
=SI(OU(A2="";B2="");"";SI(NBCAR(A2)=4;(GAUCHE(B2;2)&":"&DROITE(B2;2))-(GAUCHE(A2;2)&":"&DROITE(A2;2));SI(NBCAR(A2)=3;(GAUCHE(B2;2)&":"&DROITE(B2;2))-(GAUCHE(A2;1)&":"&DROITE(A2;2)))))

JHA
 

Pièces jointes

  • calcul heure format perso.xlsx
    9.7 KB · Affichages: 1 149
Dernière édition:

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Merci pour vos réponses.

Quand Rachid_0661 a dit que cela fonctionnait chez lui, j'ai repris mon fichier et je viens de trouver pourquoi cela ne fonctionnait pas.
Ma cellule A3 était restée au format HH:MM :eek:

Cette fois je vous joint un fichier, ça sera effectivement plus simple pour saisir mon envie.
 

Pièces jointes

  • Aide calcul heures excel-download.xlsx
    10.8 KB · Affichages: 814
  • Aide calcul heures excel-download.xlsx
    10.8 KB · Affichages: 825
  • Aide calcul heures excel-download.xlsx
    10.8 KB · Affichages: 838

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

La suite pour que cela soit plus clair :)

A l'origine toutes mes cellules étaient au format HH:MM
A13 me sert à convertir le nombre d'heure en centième d'heure.
A12 me sert à déclencher la comptabilisation de tout 1/4 d'heure commencé.

Deux nouveaux problèmes :
- Maintenant avec le format ##\:## tout est donc bon sauf mon calcul en centième qui est erroné suite au changement de format.
- Il apparait les ":" dans les cellules où je ne rentre pas d'heures mais où il y a une formule de calcul.
 
Dernière édition:

JHA

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Re,

Ton fichier en retour pour exemple

Edit: Bonjour Victor21, tout à fait d'accord avec toi mais je ne fais que répondre à la demande. Peut être que notre ami préférera le code VBA

JHA
 

Pièces jointes

  • Aide calcul heures excel-download.xlsx
    10.6 KB · Affichages: 442
  • Aide calcul heures excel-download.xlsx
    10.6 KB · Affichages: 443
  • Aide calcul heures excel-download.xlsx
    10.6 KB · Affichages: 419
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Bonjour à tous.

A toutes fins utiles, ce ficher, récupéré sur le forum, et dont je n'ai pas noté l'auteur (qu'il m'en excuse).
Simplifie quand même sacrément les calculs sur les heures, tout en gardant la saisie simpliée des hh:mm.
 

Pièces jointes

  • SaisieHeures.xls
    37 KB · Affichages: 847
  • SaisieHeures.xls
    37 KB · Affichages: 877
  • SaisieHeures.xls
    37 KB · Affichages: 883

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Salut,
ton fichier fonctionne bien chez moi.
en A3 :
@ tirer vers la droite
@ +
Rachid

Re à tous,

Le fichier modifié de JHA fonctionne très bien mais je trouve que l'utilisation du format ##\:## et de la formule NB est plus simple pour le novice que je suis.
Je souhaite savoir refaire (et donc comprendre) si un jour je reprends les formules de mon fichier.
Que JHA veuille bien m'excuser ;)

J'ai donc modifié en utilisant la méthode de Rachid sur A3 et A10 et ça correspond bien à mon souhait sauf que cette fois mes cases A12:A14 m'indiquent toutes les 3 "#valeur!"
Je simplifie d'un côté pour me créer des problèmes de l'autre mais je cherche surtout à comprendre.

(le VBA, vous me parlez hébreux, je suis vraiment novice :) )

Voici mon fichier avec la simplification de Rachid et les erreurs obtenues.
 

Pièces jointes

  • Aide calcul perso 2.xlsx
    10.8 KB · Affichages: 290
  • Aide calcul perso 2.xlsx
    10.8 KB · Affichages: 286
  • Aide calcul perso 2.xlsx
    10.8 KB · Affichages: 270

R@chid

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Salut,
pas sur d'avoir bien compris ta demande.
voir PJ.
il faut mettre des donnees sur fichier pour qu'on puisse bien comprendre.
@ + +
 

Pièces jointes

  • Aide calcul perso 2.xlsx
    10.5 KB · Affichages: 194
  • Aide calcul perso 2.xlsx
    10.5 KB · Affichages: 203
  • Aide calcul perso 2.xlsx
    10.5 KB · Affichages: 194

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Re,

Je reprends en vous joignant un fichier avec plus de valeurs et d'autres explications.

A1 = heure de début d'une première (ou unique) période journalière
A2 = heure de fin de la première (ou unique) période journalière
En A3 (par calcul automatique) je veux obtenir le temps (format HH:MM) de A2-A1

A8 = heure de début d'une éventuelle seconde période journalière
A9 = heure de fin de l'éventuelle seconde période journalière
En A10 (par calcul automatique) je veux obtenir le temps (HH:MM) de A9-A8

En A12 (par calcul automatique) je veux obtenir A3+A10 (HH:MM)
En A13 je veux obtenir le résultat de A12 mais sous format centièmes d'heures.
En A14 je veux obtenir A12 arrondi au 1/4 d'heure supérieur si le 1/4 d'heure est commencé.



Je le redis, la proposition de JHA dans son fichier de 14h59 a le résultat que je souhaite et s'il n'y a pas moyen de simplifier la formule
=SI(OU(A1="";A2="");;SI(NBCAR(A1)=4;(GAUCHE(A2;2)&":"&DROITE(A2;2))-(GAUCHE(A1;2)&":"&DROITE(A1;2));SI(NBCAR(A1)=3;(GAUCHE(A2;2)&":"&DROITE(A2;2))-(GAUCHE(A1;1)&":"&DROITE(A1;2)))))
en adaptant celle de Rachid (formule NB que je comprends et saurai reproduire) alors je ferais avec.

Merci pour votre patience à tous :)
 

Pièces jointes

  • Aide calcul perso 3.xlsx
    10.6 KB · Affichages: 221

Victor21

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Re à vous tous.

Cela me désole de voir Pilpoil s'empêtrer avec des formules à ralonge pour un problème relativement simple.
Voir fichier joint.
 

Pièces jointes

  • SaisieHeures.xls
    35.5 KB · Affichages: 420
  • SaisieHeures.xls
    35.5 KB · Affichages: 454
  • SaisieHeures.xls
    35.5 KB · Affichages: 462

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Re Victor21,

Merci pour ton fichier, il fonctionne tel que je le souhaite :D

Mais je ne comprends pas comment tu as fait !
Tes cellules A1, A2, A8 et A9 sont formatées HH:MM et pourtant quand j'y rentre mes heures sous la forme HHMM l'affichage se modifie bien comme je le désire.

Mon fichier initial est pourtant constitué à l'identique :p
Quel épisode ai-je raté ??
 

Victor21

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Re, Pilpoil.

Tout est fait par la macro (Merci à son auteur :)

VB:
  Private Sub Worksheet_Change(ByVal Target As Range)

    Dim HeurNum As String
    Dim HeurHeur As String
    Dim LongSaisie As Integer

    If Not Intersect(Target, Range("Heures")) Is Nothing Then
    'Si on saisit une formule, on sort
        If Target.HasFormula Then Exit Sub

    'Si on ne saisit rien, on sort (permet de supprimer les ":" en cas d'effacement)
        If Target = "" Then Exit Sub

    'Si on saisit du texte, on sort
        If IsNumeric(Target.Value) = False Then Exit Sub

        On Error Resume Next
        Application.EnableEvents = False

    'Initialisation des variables
        HeurNum = Target.Value
        LongSaisie = Len(HeurNum)

    'Test de la longueur de la chaîne saisi
        Select Case LongSaisie
            Case 1
                HeurNum = "000" & HeurNum
            Case 2
                HeurNum = "00" & HeurNum
            Case 3
                HeurNum = "0" & HeurNum
            Case 4
                HeurNum = HeurNum
        End Select
    'Initialisation de la variable retournée
        HeurHeur = Left(HeurNum, 2) & ":" & Right(HeurNum, 2)

    'Modification de la valeur saisie
        Target = HeurHeur
        Application.EnableEvents = True
        On Error GoTo 0
    Else
    End If

End Sub

Alt+F11 pour y accéder, mais vous n'aurez pas à pas à y toucher.
Seule la définition de la zone Heure sera à modifier si vous désirez étendre ou restreindre la possibilité de saisie des heures sous la forme hhmm.
 

Statistiques des forums

Discussions
313 296
Messages
2 096 914
Membres
106 786
dernier inscrit
Mgordat