Planning taches selon des plages horaires

phileas

XLDnaute Nouveau
Bonjour à tous;

Apres de multiples recherches sur votre forum, je ne trouve pas la solution a mon problème en sachant que je ne suis pas un grand expert d'excel.

Je m'explique:
Je cherche une formule qui me permette de renvoyer une durée relative a une tache a une date ultérieure selon une plage horaire définie ( voir fichier ci joint)
exemple: j'ai une tache de 12h00 à réaliser et j'ai 2 plages horaire de 08h00 à 12h00 et de 13h00 à 17h00 (modifiables selon la charge), il me restera donc 4 heures a réaliser pour le lendemain sur cette même plage horaire.
Quelle formule dois je mettre pour renvoyer ces 4 heures au lendemain?

N'hésitez pas me demander + d'infos si je n'ai pas été assez clair
Merci
David
 

Pièces jointes

  • Tache selon plage horaire.xlsx
    8.8 KB · Affichages: 87
  • Tache selon plage horaire.xlsx
    8.8 KB · Affichages: 96
  • Tache selon plage horaire.xlsx
    8.8 KB · Affichages: 101

job75

XLDnaute Barbatruc
Re,

Voici la macro pour 3 horaires différents :
Code:
Function Datefin(deb As Date, duree As Date, horaire As Range, feries As Range) As Date
Dim t1 As Date, t2 As Date, t3 As Date, t4 As Date, t5 As Date, t6 As Date
Dim jour1 As Date, jour2 As Date, jour3 As Date, dat&, t As Date, dur As Date, wd As Byte, d#
t1 = horaire(1)
t2 = horaire(1, 2)
t3 = horaire(2, 1)
t4 = horaire(2, 2)
t5 = horaire(3, 1)
t6 = horaire(3, 2)
jour1 = t2 - t1: jour2 = t4 - t3: jour3 = t6 - t5
If jour1 < TimeValue("0:01") Or jour2 < TimeValue("0:01") Or jour3 < TimeValue("0:01") Then End 'sécurité
If duree <= 0 Then duree = 10 ^ -9
dat = Int(CDbl(deb))
t = TimeValue(deb)
If IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) < 4 Then
  If t <= t1 Then dur = jour1
  If t > t1 And t < t2 Then dur = t2 - t
ElseIf IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) = 4 Then
  If t <= t3 Then dur = jour2
  If t > t3 And t < t4 Then dur = t4 - t
ElseIf IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) = 5 Then
  If t <= t5 Then dur = jour3
  If t > t5 And t < t6 Then dur = t6 - t
End If
While dur < duree
  dat = dat + 1
  wd = Weekday(dat, 2)
  If IsError(Application.Match(dat, feries, 0)) And wd < 6 _
    Then dur = dur + IIf(wd < 4, jour1, IIf(wd = 4, jour2, jour3))
Wend
d = dur - duree
Datefin = dat + IIf(wd < 4, t2, IIf(wd = 4, t4, t6)) - d
End Function
Fichier (4).

A+
 

Pièces jointes

  • Tâche selon plage horaire(4).xls
    75 KB · Affichages: 48

Discussions similaires

Réponses
46
Affichages
873

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87