Comment trouvé la date exacte???

Résolu
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009 - 26 mai 2005 à 14:49
labelsse Messages postés 1 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 2 novembre 2009 - 2 nov. 2009 à 14:26
j'ai essayé de creer un programme qui me donne la date de fin exacte( qui prend en compte que les jours ouvrables ) d'une tache
par exemple j'ai une date de debut qui est le 15/05/2005 est une durée de 15 jour. lorsuqe je faite dateadd("d",15/05/2005,15), il me retourne le 30/05/2005 logique mais mois je veut qu'il prend en compte que les jours ouvrable "du lundi jusqua vendredi" cela dit qu'il doit me retourner la date de fin "03/06/2005"
merci
programation .....

11 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 mai 2005 à 20:45
Salut,


1 - petite précision linguistique et juridique : les jours ouvrables sont tous les jours de la semaine sauf le dimanche et les jours ouvrés, ça dépend des professions quoique en général c'est du lundi au vendredi. Mais faut bien reconnaitre que tout le monde s'y perd tellement il y a de cas particuliers.


2 - ta tâche commence un dimanche (si si, c'est le calendrier de La Poste qui m'a dit que le 15/05/2005 était un dimanche, quel délateur quand même ! )


3 - je crois que la meilleure méthode est celle de EBArtSoft


4 - pas la peine de définr : Dim lun, mar, mer, jeu, ven, sam, diman car la fonction WeekDay peut se charger de ça.


5 - un tit bout de code qui peut peut-être te mettre sur la voie :


Dim date_debut As Date
Dim date_fin As Date
Dim duree As Integer
Dim i As Integer
Dim j As Integer


date_debut = CDate("15/05/2005")
duree = 15


Do While i < duree
date_fin = DateAdd("d", j, date_debut)
If Weekday(date_fin) > 1 And Weekday(date_fin) < 7 Then
i = i + 1
End If
j = j + 1
Loop


MsgBox date_fin


Il y a peut-être mieux mais ça a l'air de fonctionner quoique, si tes tâches commencent un samedi ou un dimanche, ces jours ne seront pas comptés.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
26 mai 2005 à 15:09
tu fait une boucle et tu incremente que si c'est un jour ouvrable
sachant que une unite (format date) = 1 jour

@+


E.B.
0
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009
26 mai 2005 à 15:14
franchement je sais pas comment faire et je suis bloqué ici
Dim nbr, i As Integer
Dim lun, mar, mer, jeu, ven, sam, diman
nbr = InputBox()
lun = 1
mar = 2
mer = 3
jeu = 4
ven = 5
sam = 6
diman = 7


je vois pas trop la suite


programation .....
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
26 mai 2005 à 15:35
Alors, juste pour être sûr, tu veux faire du jour ouvrable (Lundi au Samedi) ou du jour ouvré (Lundi au Vendredi) ?



Et est-ce que tu veux gérer les jours fériés ? ce genre de chose ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009
26 mai 2005 à 15:45
j'aurais comme données une date de debut d'une tache et la durée de celle ci "la tache"
je veut a la fin avoir la date de fin excate c'est a dire qui ne prend pas en compte "dans un premier temps " le samedi et le dimanche cela dite que les jours ouvré
et après s' il me reste du temps je fairais la meme chose pour qu'il prend pas en compte samedi, dimanche et les jours feriers

je pense que l'idée de faire une boucle est bonne mais je connais pas le syntaxe
merci conradd
programation .....
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
26 mai 2005 à 16:00
Dans ce cas, si tu divises 15/5, tu obtiens 3.

Tu ajoutes 3*2 (3 samedi et dimanche) à tes 15 jours de travail, tu obtiens 21.

Tu fais DateAdd("d","21","13/05/2005") pour Vendredi 13 mai 2005, tu obtiens 03/06/2005

Si ta division ne tombe pas juste, tu prends la partie entière que tu multiplies par 2 et tu rajoutes 1 jour pour la partie décimale si tu ne veux pas te prendre la tête avec les heures
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
26 mai 2005 à 16:04
Pardon, j'ai dit une bêtise pour la partie décimale...

Tu la multiplies par 5 pour obtenir le nombre de jours de la semaine à rajouter
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
26 mai 2005 à 16:06
Arf, mais faut que j'arrête de dire des bêtises moi, tu ne te sers pas de la partie décimale en fait...
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
27 mai 2005 à 08:51
CanisLupus a raison, j'y ai réfléchi dans la soirée et ma méthode est trop simpliste et en plus, elle ne marche pas dans tous les cas.


Si tu fais par boucle en plus, ça te permettra de gérer les jours fériés, tes jours d'absences (RTT, CP, ...), donc c'est tout bénéf.


Maintenant, je vais tourner 7 fois mon post dans ma tête avant de l'écrire
0
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009
27 mai 2005 à 10:10
bonjour ,
merci conradd, et merci canislupus pour votre aide.
votre solution canislupus est bonne car il fonctionne dans mon programme.
personnellement je devellope une application sous access pour visualiser un planning gantt. et la je suis a la fin de mon projet grace a vous, merci, merci.
adil

programation .....
0
labelsse Messages postés 1 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 2 novembre 2009
2 nov. 2009 à 14:26
Bonjour,
j'aimerais avoir le code à taper sur vb de la fonction SERIE.JOUR.OUVRE de excel svp.
Cette discussion se rapproche beaucoup de ce que je cherche.
J'aimerai donc qu'en entrant une date de début et une durée, il me calcule la date de fin en prenant pas en compte les samedis, dimanche et jour férié.
Merci d'avance de votre aide
0
Rejoignez-nous