Tâche dans une plage horaire

-2

Bonsoir à 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.
exemple: 
- j'ai une plage horaire de 8h-12h et 13h-17h
- la date et heure de début : 01/12/2014 à 08:00
- je travaille du lundi au vendredi 

scénario 1:si j'ai une tache d'une durée de 08h30; je dois avoir un résultat de 1 jour + 30' donc le mardi a 8h30
scénario 2:si j'ai une tache d'une durée de 05h30; je dois avoir un résultat lundi a 15h30
En résumé , je veux que la durée de la tache soit uniquement dans cette plage horaire

a noter que la durée d'une tache peut être variable et la valeur des plages horaires peuvent être modifiables.

je ne sais pas si j'ai été très clair, n'hésitez pas a me demander + de précisions !!!
merci beaucoup pour votre aide

phileasdav Posté le 29 novembre 2014, 20:00
par phileasdav
Répondre
1

Bonjour à tous

je me permet de relancer ce post car je cale vraiment sur ce problème
Quelqu'un aurait il une solution? peut être en vba?
merci d'avance

phileasdav Posté le 30 novembre 2014, 09:32
par phileasdav
0

C'est assez délicat car tu cherches à obtenir la date et l'heure de fin de la tâche. Pour obtenir simplement la date, tu peux sans doute arriver à le faire en utilisant la fonction NB.JOURS.OUVRES (NETWORKDAYS en version US). Cette fonction retourne le nombre de jours ouvrés entre 2 dates (ça permet d'exclure les week end et les jours férié). Voici quelques exemples (en anglais, je n'ai rien trouvé en français) :

Je te conseille d'essayer des outils de planification comme Microsoft Project (ou Gantt project en gratuit) qui permettent de gérer une liste de tâches, les dates, les dépendances entre les tâches...

Si tu tiens absolument à le faire dans excel, alors je pense que le plus simple est d'utiliser une macro VBA (ça sera plus facile à mon avis que d'essayer d'écrire une formule compliquée). Voici une idée d'algorithme :

  1. Déclarer ces variables :
    restant : durée restante (en minute), l'initialiser avec la durée de la tâche
    avancement : date, initialisé à la date de début de la tâche
  2. Faire une boucle : tant que restant est supérieur à 0 (autrement dit tant que la tâche n'est pas terminée) :
    • Récupérer l'heure de début (debut_plage), et la durée (duree_plage) de la prochaine plage, à partir de la date avancement
    • Si restant < duree_plage, la tâche se termine dans la plage courante, donc on retourne l'heure de fin qui correspond à : debut_plage + restant
    • Sinon :
      avancement = debut_plage + duree_plage + 1 seconde (juste après la plage horaire courante)
      restant = restant - duree_plage (on décompte la durée de la plage du temps restant)
Vince Posté le 2 décembre 2014, 10:25
par Vince

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :