Vba DateAdd avec exceptions (horaires, WEnd)

Résolu/Fermé
wiidle Messages postés 16 Date d'inscription mardi 3 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 - 3 oct. 2011 à 09:34
wiidle Messages postés 16 Date d'inscription mardi 3 mai 2011 Statut Membre Dernière intervention 5 octobre 2011 - 5 oct. 2011 à 10:46
Bonjour à toutes et à tous,

Je viens vers vous avec un petit casse-tête qui à occupé toute ma semaine dernière, et je viens donc demandé de l'aide pour essayer de résoudre cela.

Je réalise une macro depuis Word avec un userform (on ne peut pas utiliser la fonction Workday !!)
Dans cette macro je dois réaliser un planning des tâches en fonction d'une période préalablement désignée sur un calendrier (pas de soucis ici).

La où je bloque c'est au moment d'utiliser le DateAdd (aucune certitude dans cette utilisation :( )

Par exemple, le projet est en trois phases (P1, P2 et P3)
L'utilisateur sélectionne les dates du projet : de vendredi 12h00 à mercredi 12h00 (donc 3 jours ou 24 heures de travail effectif ou encore 1440 minutes (oui je sais je maîtrise la calculette !!) (^^) )

en admettant que le temps alloué à chaque étape du projet soit les mêmes,

comment faire pour pouvoir déterminer le début et la fin de chaque étape en considérant que le temps de travail est de 8 heures par jour (de 9 à 18h avec une heure de pose entre 13 et 14h) et en prenant en considération les week-end ?

le résultat devrait être :
- DebutP1 : vendredi 12h00 / FinP1 : lundi 12h00
- DebutP2 : Lundi 12h00 / FinP2 Mardi 12h00
- DebutP3 : Mardi 12h00 / FinP3 mercredi 12h00

Voila le petit problème ;) !!!!
Merci d'avance pour vos réponses.


PS: je n'ai pas mis de code parce que pour l'instant je suis parti dans une méthode trop compliquée (avec des tonnes de calcul et de if.... then...elseif... else...).

Merci encore.


1 réponse

wiidle Messages postés 16 Date d'inscription mardi 3 mai 2011 Statut Membre Dernière intervention 5 octobre 2011
5 oct. 2011 à 10:46
Bonjour à tous,

Bon j'ai finalement réussi à réaliser cette macro.
Pour cela j'ai du créer de nombreuses fonctions,
utiliser du DateAdd à foison,
et une ribambelle de If...ElseIf...Else...
Soutraire ou ajouter des minutes, des heures, des jours entiers !!! (woooaaahhh)

Au final j'ai un code de 240 lignes !!! Mais sa fonctionne ;)

La prochaine évolution de ma macro sera le fait de prendre en compte les jours fériés et de permettre à l'utilisateur de sélectionner le samedi comme jour ouvré (et pi être même d'autres jours aussi tiens :!).
Que du BONHEUR !!!

Bonne journée à tous.
0

Discussions similaires