Sauvegarde et Récupération Heures

VIARD

XLDnaute Impliqué
Bonjour à toutes et tous

J’ai 2 problèmes.
Je joins une version ultra simplifiée qui regroupe mes soucis.
Mon but : j’additionne les heures travaillées d’une journée,
1° - Ici j’ai un souci avec la formule
=SI(NBVAL(D9:G9)<2;"";MOD((E9-D9)+(G9-F9);1))
Elle fonctionne à un détail près, le matin le delta est bien en H9
Le delta de l’après-midi est bien sommé en H9
Mais si une seule des heures de l’après-midi est présente je voudrais que H9 ne soit pas modifié.
2°- Les heures de la journée (ici c’est version simplifiée) sont enregistrées sous forme série,
En D20, ici j’ai 3 cas possibles. Jusque là tout va bien.

08:00 12:01 13:00 17:15 8:16

Résultat de l’enregistrement : 1° cas
0,333333333333333;0,500694444444444;0,541666666666667;0,71875;

08:00 11:59 13:00 17:15 8:14

Résultat de l’enregistrement : 2° cas
0,333333333333333;0,499305555555556;0,541666666666667;0,71875;

08:00 12:00 13:00 17:15 8:15

Résultat de l’enregistrement : 3° cas
0,333333333333333;0,5;0,541666666666667;0,71875;

Pour ce troisième cas le résultat de la récupération est fausse alors que la donnée est correcte.
Résultat de la récupération :
08:00 00:00 13:00 17:15 20:15

Ceci dit j’ai un problème de format, la récupération est sous forme texte.
J’ai bien utilisé VAL mais sans succès tout devient faux.
La récupération des 2 premiers cas est correct.
Quelqu’un a-t-il la solution ?

Salutation
Jean-Paul
 

Pièces jointes

  • ManipHoraire.xls
    39 KB · Affichages: 44
  • ManipHoraire.xls
    39 KB · Affichages: 43
  • ManipHoraire.xls
    39 KB · Affichages: 43

fredl

XLDnaute Impliqué
Re : Sauvegarde et Récupération Heures

Bonjour,
effectivement, je constate que si il n'y a qu'un chiffre apres la virgule, cela bugge
Je te propose donc de rajouter un zero dans ce cas de figure, et cela semble marcher
(a verifier sur d'autres cas)

ce que j'ai apporté comme modif dans le fchier :

If Len(Extr) = 3 Then
Cells(8 + i, 3 + J).Value = Format(Extr & "0", "hh:mm")

Else
Cells(8 + i, 3 + J).Value = Format(Extr, "hh:mm")
End If

tiens moi au courant!

cdt
Frederic
 

Pièces jointes

  • ManipHoraire.xls
    38 KB · Affichages: 32
  • ManipHoraire.xls
    38 KB · Affichages: 44
  • ManipHoraire.xls
    38 KB · Affichages: 37

sousou

XLDnaute Barbatruc
Re : Sauvegarde et Récupération Heures

Bonsoir

1/
Si dessous une fonction la formule zone etant la zone avec tes horaires exemple =calcul(d10:g10)
Function calcul(zone)
flag = 0
For n = 1 To 2
If zone(n) = 0 Then flag = 1
Next
If flag = 0 Then ma = zone(2) - zone(1) Else ma = 0
flag = 0
For n = 3 To 4
If zone(n) = 0 Then flag = 1
If flag = 0 Then ap = zone(4) - zone(3) Else ap = 0
calcul = CDate(ma + ap)
Next
End Function


2/ utilise cdbl
Cells(8 + i, 3 + J).Value = Format(CDbl(Extr), "hh:mm")
 

VIARD

XLDnaute Impliqué
Re : Sauvegarde et Récupération Heures

Bonjour Fredl, Sousou

Je vous remercie tous deux, j'ai testé les 2 solutions, ça marche nickel.
Ceci m'enlève une épine du pied, pourtant c'est pas faute d'avoir manipé.

Pour la formule de "Sousou" je vais regarder, et dans la foulé (Bon anniversaire).

merci, amicalement

Jean-Paul
 

VIARD

XLDnaute Impliqué
Re : Sauvegarde et Récupération Heures

Bonjour à tous

Tout fonctionne à merveille , merci à Sousou
J’ai toutefois modifié légèrement la fonction
C’est énervant de trimballer une quantité de zéro.

[VB]Function calcul(Zone)
flag = 0
For n = 1 To 2
If Zone(n) = 0 Then flag = 1
Next
If flag = 0 Then ma = Zone(2) - Zone(1) Else ma = 0
flag = 0
For n = 3 To 4
If Zone(n) = 0 Then flag = 1
If flag = 0 Then ap = Zone(4) - Zone(3) Else ap = 0
calcul = CDate(ma + ap)
If ma = 0 And ap = 0 Then calcul = ""
Next
End Function
[/VB]


Et son utilisation dans le programme,
Cells(i , 6).FormulaR1C1 = "=calcul(RC[-4]:RC[-1])"

CDT

Jean-Paul
 

Discussions similaires

Réponses
7
Affichages
353
Réponses
3
Affichages
395

Statistiques des forums

Discussions
312 207
Messages
2 086 237
Membres
103 162
dernier inscrit
fcfg