VBA - Additions d'heures dans horaires ouvrés

tototiti2008

XLDnaute Barbatruc
Bonjour à tous,

Je cherche à créer une fonction VBA (Function) qui permettrait, en fonction de plages horaires de travail (jusquà 3), d'une date et heure de début et de la durée d'une tâche, de déterminer la date et heure de fin de la tâche (évidement dans les plages horaires de travail).

Je me suis penché sur un problème du même genre mais pas adapté à ce problème et j'ai eu beaucoup de mal à trouver une solution correcte. Ce qui m'intéresse est plus l'analyse que le code résultant, j'aimerais vos avis sur comment aborder le problème, je sèche un peu... :)
 

Pièces jointes

  • horaires.xls
    13.5 KB · Affichages: 724
  • horaires.xls
    13.5 KB · Affichages: 755
  • horaires.xls
    13.5 KB · Affichages: 779

job75

XLDnaute Barbatruc
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour tototiti,

Un schéma de solution :

1) Créer une fonction F(X) qui renvoie le temps de travail entre début1 (08:00) et l'heure X. Le code fera bien sûr une série de tests sur le résultat de EQUIV(X;horaires). Si X > 18:00 faire X = X-10:00 et F(X) = F(X)+08:15

2) Le temps de travail entre 2 heures X et Y est donné par F(Y)-F(X)

3) Le problème posé est l'inverse du 2) : le temps de travail étant donné, déterminer Y.
Pour cela, partir de X et incrémenter de 1/4 d'heure en 1/4 d'heure la valeur de Y jusqu'à ce que F(Y)-F(X) soit égal au temps de travail.
La fonction FinTache(X, temps de travail) renverra la valeur Y trouvée.

Cela dit, pour écrire le code de tout ça, faut rester calme...

A+
 

tototiti2008

XLDnaute Barbatruc
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour job75,

merci de t'intéresser, ta démarche est intéressante.

J'y ai réfléchi et je pensais travailler comme ça :

1-déterminer dans quelle plage horaire d'une journée l'heure de départ se situe
(prévoir le cas peu probable où on est pas dans une plage horaire de la journée)

2-si heure de début + temps de travail ne sort pas de cette plage horaire, on calcule tout de suite date et heure de fin

3-sinon, appel récursif de la fonction avec heure de début = heure de début de plage suivante et temps de travail réduit des heures déjà travaillées

Je pense que ça devrait tourner, il n'y a plus qu'à s'y mettre maintenant...

Je ne manquerais pas de poster le résultat

A bientôt :)
 

tototiti2008

XLDnaute Barbatruc
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour à tous,

bon, ça a mis du temps mais comme promis, voici le résultat.
Pas sûr que le code soit optimisé mais : tata ! ça marche

si ça peut servir à d'autres, ça pourra peut-être leur éviter la prise de tête que ça m'a valu :)
 

Pièces jointes

  • horaires ouvrés.xls
    41.5 KB · Affichages: 934
  • horaires ouvrés.xls
    41.5 KB · Affichages: 969
  • horaires ouvrés.xls
    41.5 KB · Affichages: 984

tototiti2008

XLDnaute Barbatruc
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour à tous,

il y avait un petit bug...

voici la version corrigée :
 

Pièces jointes

  • horaires ouvrés.xls
    41.5 KB · Affichages: 1 620
  • horaires ouvrés.xls
    41.5 KB · Affichages: 1 415
  • horaires ouvrés.xls
    41.5 KB · Affichages: 1 253

etom

XLDnaute Nouveau
Re : VBA - Additions d'heures dans horaires ouvrés

bonjour tototiti2008,
après une longue recherche sur la toile je suis tombé sur ce post et ton fichier! quelle joie de le trouver!!! il répond quasi en tout point à ce que je cherchais.
... QUASI ... seulement... je sais je fais le difficile.
bon tout d'abord je suis un débutant en excel et macro et tutti quanti donc j'ai un peu cherché à bidouiller le tout mais mes tentatives restent infructueuses!

ton super fichier peut calculer le temps entre 2 dates en prenant en compte les week end les jours fériés et les plages horaires! je souhaite rajouter les jours non ouvrés travaillés de la même manière que se fait les jours fériés. En effet tu déclares dans un coin les jours ouvrés mais fériés qu'il faut donc déduire du calcul. je cherche à inclure dans le calcul un samedi ouvrés par exemple ou un dimanche (date renseignée dans un autre coin)

d'autre part le résultat affiche la durée ainsi calculée en heure... j'aimerais bien que le résultat affiche aussi le nombre de jours ( par exemple 3j 2h 26m) et bien sur 1j correspondrait à la somme des plages horaires définies...

souhaitant comprendre et apprendre si tu pouvais m'aider à réaliser ca je serais un bon élève... mais il faudra être tolérent car j'apprends sur le tas en sautant plein d'étape donc je pose bcp de questions.

si toutefois tu n'as pas le temps de m'expliquer alors si tu pouvais me fournir le résultat j'essaierai de comprendre seul.

enfin si tu ne fais plus partie du site ... ben .... zut flute comment vais je faire ? lol
dans ce cas est ce que qq un d'autre saurait m'aider ?

Bien cordialement

eTom
 

tototiti2008

XLDnaute Barbatruc
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour etom,

C'était ma première approche de la problématique mais je crois que de nombreuses solutions à ce type de problème ont été apportées sur le forum, parfois par formule.

Je vois ce que tu veux dire par ajouter les jours non ouvrés travaillés, mais je ne comprend pas bien ton écriture en jours

ce truc a plus de 2 ans, pas sûr de me souvenir comment je l'avais fait ;)
 

pascb423

XLDnaute Nouveau
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour,
bravo pour ce magnifique programme mais il y a encore un petit beug, effectivement si par maladresse on choisi un jour férier ou un jour de weekand en début ou en fin, ca met une erreur VALEUR et ca ne calcul pas.
j'ai essayé de trouver comment remédier à ce problème, mais la j'avoue que je bloque? pourriez-vous regarder pour enlever cette erreur et que ca calcul meme si on commence ou fini une jour férier ou de weekand, merci beaucoup
Pascal
 

fngabi

XLDnaute Nouveau
Re : VBA - Additions d'heures dans horaires ouvrés

Bonsoir tous.
Je viens de tomber sur cette discussion et elle traite d'un épineux problème que je rencontre.
pascb423 stp a tu pu solutionner le bug auquel fait reférence ton dernier post ? En effet, je rencontre le même type de bug.

La macro n'arrive par exemple pas à calculer la durée entre les 2 date-heures suivantes (ma plage de travail est 07:00 - 19:00):
02/01/2016 06:05:07 et 02/01/2016 07:51:00
La formule renvoie #VALEUR.
Plus généralement, pour un calcul dans la même journée, si l'heure de début est inférieure à 07:00 (heure de début de ma plage d'heures de travail) et que l'heure de fin ne dépasse pas 19:00 (heure de fin de ma plage d'heures de travail), le calcul ne s'effectue pas.

Merci d'avance pour vos réactions
 

fngabi

XLDnaute Nouveau
Re : VBA - Additions d'heures dans horaires ouvrés

Bonjour pascb423.

J'ai bien télécharger la PJ. Mais j'ai du mal à m'y retrouver, car n'étant pas très avancé sur Excel.

J'aurais pensé que copier le script du module aurait solutionné le problème... Mais hélas, ton fichier comporte plusieurs modules et je suppose qu'il faut savoir les agencer tous.

Peut tu m'indiquer comment le faire stp ?
Le fichier de tototiti2008 ne comportait qu'un seul module, donc je m'y suis retrouvé facilement.

Encore désolé pour le dérangement et merci d'avance.
 

bastoush

XLDnaute Nouveau
Bonjour,

Je reprends le post, car j'ai utilisé la même formule pour l'adapter à mon besoin, seulement il manque quelques informations à mettre à jour.

Voir classeur ci-joint.

Je voudrais faire un calcul automatique à partir de la date et heure Moulage (B7) des dates et heures réelle (colonne D) en fonction des heures renseignées (colonne C qui peuvent varier) en prenant en compte "Jours Congés/Fériés/ACT" et les horaires d'ouvertures différentes selon le jour de la semaine ("15h15" de travail du lundi au jeudi de 07:15 à 15:15 et 10h de travail le vendredi de 07:00 à 17:00).
Avec contrainte des heures de convocation en colonne E:
Visite 1 "B10" à partir de 8h30 et maximum 22h00.
Visites 2 / 3 / 4 / 5 / 6 / 7 "B11 à B16" à partir de 8h30 et maximum 18h30.
Visite 8 "B17" à partir de 8h30 et maximum 17h00.
Si une visite tombe après les heures max, reporter au lendemain première heure de visite (8h30).

A aujourd'hui la formule ne me différencie pas si ça tombe un vendredi du coup moins de travail.
Et également la colonne E que je doit calculer en fonction de la colonne D mais avec une contrainte d'heure de convocation sur une plage imposé.

A dispo pour plus de renseignement si je ne suis pas très clair.

En vous remerciant infiniment pour votre aide.
 

Pièces jointes

  • Date convocation.xls
    53 KB · Affichages: 116

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16