Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2011, 09h39   #1
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 0
Points : 0
Par défaut vba DateAdd avec exceptions (horaires, WEnd)

Bonjour à toutes et à tous,

Je viens vers vous avec un petit casse-tête qui a occupé toute ma semaine dernière, et je viens donc demander 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.
wiidle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 10h54   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 332
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 332
Points : 29 238
Points : 29 238
Salut,


DateAdd ajoute un intervalle à une date, on peut déterminer le type d'intervalle qui sera ajouté à la valeur.

m pour le mois, d pour le jour, yyyy pour l'année, ....

L'utilisation est relativement simple :

Code :
MaNouvelleDate = DateAdd("m", 2, Now())
MaNouvelleDate aura comme valeur 03/12/2011 10:52:37

Cette fonction étant une simple addition, les temps de travail ne sont pas pris en compte.


http://mhubiche.developpez.com/vba/f...ions/datetime/
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h00   #3
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 0
Points : 0
Bonjour et merci d'avoir répondu,

Alors j'avais déjà bien étudié la fonction DateAdd en détail et je connais sa syntaxe. Je l'utilise d'ailleurs dans ma macro (incomplète pour l'instant).
Je sais qu'elle sert à ajouter un intervalle de temps, mais cela ne résout qu'en partie mon problème.

Je cherche un moyen de pouvoir gérer les horaires de travail et les week-ends.
wiidle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h11   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 332
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 332
Points : 29 238
Points : 29 238
Salut,

Tu dois alors probablement savoir que pour ce type de gestion il y a MSproject.

Tu vas devoir gérer les exceptions dans ton code, VBA Word ne le fait pas.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h10.


 
 
 
 
Partenaires

Hébergement Web