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

phileas

XLDnaute Nouveau
Re : Planning taches selon des plages horaires

oui j'ai regardé mais ce n'est pas ça que je recherche !
ce fichier correspond exactement a ce que je souhaite (voir fichier joint) avec la possibilité de pouvoir changer en c3, d3 c4 et d4 les données de la plage horaire mais peut etre que je m'y prend mal :confused:avec la formule matricielle car c'est la 1ere fois que j'en utilise , est ce possible de l'activer par un bouton?

merci
 

Pièces jointes

  • Tache selon plage horaire(1).xls
    42 KB · Affichages: 52
  • Tache selon plage horaire(1).xls
    42 KB · Affichages: 45
  • Tache selon plage horaire(1).xls
    42 KB · Affichages: 58

phileas

XLDnaute Nouveau
Re : Planning taches selon des plages horaires

oui, tu as raison , le bon (pour moi)c'est le post 12 que j'ai légèrement modifié comme tu pourras le constater, je faisais allusion au 13 ou il avait marqué son erratum, désolé !!
Enfin bref comme disait pépin , on s'y perd ...........!! mais ça ne résout pas mon problème de fond sur la modification des cellules de plages horaires

merci
 

JCGL

XLDnaute Barbatruc
Re : Planning taches selon des plages horaires

Bonjour à tous,

Comme tu souhaites avoir le jour et l'heure dans la même cellule, en C10 et vers le bas :

Code:
=ENT(Datefin($C$8;$B10;Fériés))+MOD(Datefin($C$8;$B10;Fériés);1)

A+ à tous
 

phileas

XLDnaute Nouveau
Re : Planning taches selon des plages horaires

Aurais tu une solution pour généraliser le ctrl+maj+entre de la formule matricielle a toutes les cellules de c10 à c19? car quand je sélectionne toutes les cellules, elles prennent toutes l'information de la 1ere cellule .

merci encore pour ton aide généreuse
 

job75

XLDnaute Barbatruc
Re : Planning taches selon des plages horaires

Re,

Puisque vous voulez pouvoir modifier les horaires en C3: D4 il vaut mieux les mettre en argument de la fonction.

De cette manière les formules se recalculent automatiquement.

Et j'en profite pour ajouter un test de sécurité (si on efface C3: D4) :

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, jour As Date
Dim dat&, t As Date, dur As Date, d#
t1 = horaire(1)
t2 = horaire(1, 2)
t3 = horaire(2, 1)
t4 = horaire(2, 2)
jour = t2 - t1 + t4 - t3
If jour < 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) < 6 Then
  If t <= t1 Then dur = jour
  If t > t1 And t < t2 Then dur = t2 - t + t4 - t3
  If t >= t2 And t < t3 Then dur = t4 - t3
  If t >= t3 And t < t4 Then dur = t4 - t
End If
While dur < duree
  dat = dat + 1
  If IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) < 6 _
    Then dur = dur + jour
Wend
d = dur - duree
Datefin = dat + t4 - d - IIf(d >= t4 - t3, t3 - t2, 0)
End Function
Edit : si duree = 0 (cellule vide), j'ai ajouté une toute petite valeur pour passer au 1er jour ouvré.

Fichier (2).

Nota : Datefin donne la date et l'heure, on peut l'utiliser dans une seule cellule...

A+
 

Pièces jointes

  • Tache selon plage horaire(2).xls
    52.5 KB · Affichages: 57
Dernière édition:

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Par rapport a ce post qui me donne un très bon début de réponse pour mon problème de planning de Gant qui est en cours
Est-ce qu'il est possible de définir 2 créneau horaires
du lundi au jeudi = 5h à 21h
le vendredi = 5h à 11h

Merci à tous

bibbip35
 

job75

XLDnaute Barbatruc
Bonjour bibbip35,

La macro adaptée avec les 2 variables jour1 et jour2 :
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, jour1 As Date, jour2 As Date
Dim dat&, t As Date, dur As Date, d#
t1 = horaire(1)
t2 = horaire(1, 2)
t3 = horaire(2, 1)
t4 = horaire(2, 2)
jour1 = t2 - t1: jour2 = t4 - t3
If jour1 < TimeValue("0:01") Or jour2 < 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) < 5 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) = 5 Then
  If t <= t3 Then dur = jour2
  If t > t3 And t < t4 Then dur = t4 - t
End If
While dur < duree
  dat = dat + 1
  If IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) < 6 _
    Then dur = dur + IIf(Weekday(dat, 2) < 5, jour1, jour2)
Wend
d = dur - duree
Datefin = dat + IIf(Weekday(dat, 2) < 5, t2, t4) - d
End Function
Fichier (3).

A+
 

Pièces jointes

  • Tâche selon plage horaire(3).xls
    72 KB · Affichages: 39

bibbip35

XLDnaute Occasionnel
Merci Job75 !!! pour ton aide et support
Je vais pouvoir avancer sur mon planning

Par contre ,une question ,pourrais tu m'expliquer comment faire si je dois modifier les autres jour
Par exemple , le jeudi ? Il faut modifier le code entier je suppose ...

Merci encore et bonne soirée

Bibbip
 

job75

XLDnaute Barbatruc
Re,

Comme je l'ai indiqué il faut une variable "jour" différente pour chaque ligne de la plage horaire.

Et autant de variables t1 t2 t3... que cette plage a de cellules.

Pour adapter ce n'est pas très difficile mais il faut avoir compris la macro.

A+
 

Discussions similaires

Réponses
46
Affichages
793

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi