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

Fonction pour compter heures jour/nuit semaine, férié et dimanche

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide afin d'écrire les fonctions pour un planning..
voir fichier joint, c'est plus simple car explications compliquées...

Je vous remercie pour le temps que vous voudrez bien m'accorder.

Bien à vous,
Christian.
 

Pièces jointes

  • PlanningPlusieursHorairesUneColonne.zip
    13.7 KB · Affichages: 109

lucmohamed

XLDnaute Nouveau
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonsoir,

j'ai arrivé à faire que Vendredi soit le jour férié au lieu et place Dimanche. Voici les modification que j'ai fait

code:
 

job75

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonjour Christian, le fil, le forum,

Une substantielle amélioration dans cette version (5) :

Code:
Sub Calcul(test1 As Boolean, test2 As Boolean, horaire$, a)
If test1 + test2 = 0 Then Exit Sub
Dim deb#, fin1#, fin#, s, i%, s1, h1#, h2#, jour#, nuit#
deb = [DN]: fin1 = [FN]: fin = fin1 + 1
horaire = Replace(Replace(UCase(horaire), "H", ":"), "24:", "0:")
s = Split(horaire)
For i = 0 To UBound(s)
  s1 = Split(s(i), "-")
  If UBound(s1) = 1 Then
    h1 = CDate(s1(0))
    If h1 < h2 Then h1 = h1 + 1
    h2 = CDate(s1(1))
    If h2 <= h1 Then h2 = h2 + 1 'ou h2 < h1...
    If test1 Then '1er jour
      jour = jour - IIf(h2 > fin1, fin1, h2) + IIf(h1 > fin1, fin1, h1)
      jour = jour + IIf(h2 > deb, deb, h2) - IIf(h1 > deb, deb, h1)
      nuit = nuit + IIf(h2 > fin1, fin1, h2) - IIf(h1 > fin1, fin1, h1)
      If h1 < 1 And h2 > deb Then _
        nuit = nuit + IIf(h2 > 1, 1, h2) - IIf(h1 > deb, h1, deb)
    End If
    If test2 Then '2ème jour
      jour = jour + IIf(h2 > fin, h2, fin) - IIf(h1 > fin, h1, fin)
      If h1 < fin And h2 > 1 Then _
        nuit = nuit + IIf(h2 > fin, fin, h2) - IIf(h1 > 1, h1, 1)
    End If
  End If
Next
a(0) = jour: a(1) = nuit 'heures renvoyées
End Sub
Les heures sont renvoyées dans un tableau (a) de 2 éléments.

De ce fait le nombre de fonctions est divisé par 2, ce sont des vecteurs lignes.

Pour entrer les formules il faut d'abord sélectionner les cellules par paires : C5: D5, E5:F5, G5:H5.

Et valider la formule matriciellement par Ctrl+Maj+Entrée.

Nota 1 : la durée d'exécution est elle aussi divisée par 2.

Nota 2 : les heures pouvant dépasser 24:00, la plage C5:H35 est au format [h]:mm.

Bonne journée et A+
 

Pièces jointes

  • PlanningPlusieursHorairesUneColonne(5).xls
    82.5 KB · Affichages: 81
  • PlanningPlusieursHorairesUneColonne(5).xls
    82.5 KB · Affichages: 70
  • PlanningPlusieursHorairesUneColonne(5).xls
    82.5 KB · Affichages: 78

job75

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Re,

Je pense qu'avec la version (5) on a fait le tour de la question.

Cependant, si vous testez bien, vous remarquerez que la dernière plage de nuit du 2ème jour (21:00-24:00) se comptabilise en heures de jour.

On pourrait y remédier mais cela alourdirait inutilement le calcul car normalement ces heures-là doivent apparaître dans l'horaire du jour suivant.

A+
 

job75

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Re,

Bon, si l'on tient à traiter correctement la plage 21:00-24:00 du 2ème jour, voir ce fichier (5 bis).

A+
 

Pièces jointes

  • PlanningPlusieursHorairesUneColonne(5 bis).xls
    83.5 KB · Affichages: 70
Dernière édition:

lucmohamed

XLDnaute Nouveau
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonjour CHALET53,

je n'ai pas bien compris ce que vous vouliez dire de "Il suffit de gérer les jours fériés sur 2 exercices (et modifier la plage fériés pour intégrer A+1) : je l'ai testé"

Pourriez vous expliquez plus en détail??

Merci.
 

lucmohamed

XLDnaute Nouveau
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche


Bonjour CHALET53,

je n'ai pas bien compris ce que vous vouliez dire de "Il suffit de gérer les jours fériés sur 2 exercices (et modifier la plage fériés pour intégrer A+1) : je l'ai testé"

Pourriez vous expliquez plus en détail??

Merci.
 

CHALET53

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonjour,

Je croyais que la dernière version de Job75 traitait le problème (a priori non)
Le 31/12/2014 tombe un Mercredi
Une plage horaire saisie à cette date : 08H00-07H00 (se termine le 01/01/2015 : jour férié). La fonction de Job75 renvoie les 23 heures sur le 31/12/2014 en jours ouvrables. On devrait avoir : jour ouvrable (13 et 3) et en jour férié (1 et 6)
En modifiant la feuille Config pour mettre la plage Férié sur 2 exercices (An et An+1), et en redéfinissant la plage jusqu'en A28, le problème est réglé
 

job75

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Hello CHALET53,

Je croyais que la dernière version de Job75 traitait le problème (a priori non)

Mais les jours fériés ne sont pas du tout un problème.

Ce n'est qu'une liste de dates... S'il en manque, eh bien pas de jour férié, c'est aussi simple que ça

Et au besoin faire une liste des jours fériés sur 10 ans ou plus, point barre.

A+
 

CHALET53

XLDnaute Barbatruc
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonjour Job75

Avec toutes mes excuses : je sens une pointe d'agacement dans tes propos
C'est vrai que je ne suis qu'un petit sur ce forum : aussi, je m'éclipse de cette discussion sur la pointe des pieds

A+
 

lucmohamed

XLDnaute Nouveau
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Bonjour,

job75 a tout expliqué. merci bcp.

Une petite question. Désolé pour notre tete dure.

Dans le cas du mercredi 31 décembre 2014, un travail a été fait de 14h00-03h00. Il calcul que la partie non ferié. Il ne mets pas dans la colonne jour ferié le 03h ferié.

Si je suis en train de passer à coté de quelque chose, excusez moi. Je suis pas un expert.
 

Christian0258

XLDnaute Accro
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Re, le forum, lucmohamed,
Bonjour à tous,

lucmohamed, il faut redéclarer, dans nom définir, la zone "Férié" jusqu'en A16 valider puis mettre cette formule :
=DATE(An+1;1;1) en A16 feuille "Config".

Bien amicalement,
Christian
 

Christian0258

XLDnaute Accro
Re : Fonction pour compter heures jour/nuit semaine, férié et dimanche

Re, le forum, Job75,

Je reviens sur ce beau travail effectué par Job75...

J'ai une tite question ; si je choisit l'option Calendrier1904, il me semble que les fonctions ne renvoient pas les bons calculs ???.

Bien à vous,
Christian
 

Discussions similaires

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