Comment relier une procedure et deux fonction pour avoir une resultat unique..
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009
-
4 mai 2005 à 10:41
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 2011
-
7 mai 2005 à 11:19
bonjour
j'ai devolloper un programme qui calcul les date et les heures de fin d'une fabrication. dans ce programme il y'a une procedure qui calcul les date de fin " brut" c'est a dire samedi , dimanche, et jour ferier tous inclus. en meme temps j'ai fait deux fonction qui calcule le nombre de jour ouvré ( il prend en compte samedi et dimanche et jour ferier)
mon problème maintenant est comment relier les deux car j'ai essayé est ça marche pas
merci
programation .....
A voir également:
Comment relier une procedure et deux fonction pour avoir une resultat unique..
Private Sub date_de_fin_net_Enter()
' la det de debut et date fin
Dim date1, date2 As Date
Dim nombrejour, nbjourtot As Double
date1 = [date debut].Value
date2 = [date fin].Value
[date de fin net].Value = nbjourouvrable(date1, date2)
End Sub
Function nbjourouvrable(date1, date2)
'fonction de calcul de nombre de jour ouvrable
Dim nbjourtot As Double
Dim i As Integer
If date1 "" Or date2 "" Then Exit Function
nbjourtot = DateDiff("d", date1, date2) + 1
For i = 1 To nbjourtot
If ferie(date1) Then
nbjourtot = nbjourtot - 1
End If
date1 = DateAdd("d", 1, date1)
Next
nbjourouvrable = nbjourtot
End Function
Function ferie(Jour)
'fonction de calcul des jours feries
If Jour = "" Then Exit Function
Dim JJ, AA, mm
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote
JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)
If JJ 1 And mm 1 Then ferie = True: Exit Function '1 JanvierIf JJ 1 And mm 5 Then ferie = True: Exit Function '1 MaiIf JJ 5 And mm 5 Then ferie = True: Exit Function '5 MaiIf JJ 14 And mm 7 Then ferie = True: Exit Function '14 JuilletIf JJ 15 And mm 8 Then ferie = True: Exit Function '15 AoûtIf JJ 1 And mm 11 Then ferie = True: Exit Function '1 NovembreIf JJ 11 And mm 11 Then ferie = True: Exit Function '11 NovembreIf JJ 25 And mm 12 Then ferie = True: Exit Function '25 Décembre
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30)If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
Paques = PLune - WeekDay(PLune) + vbMonday + 7 'PaquesIf JJ Day(Paques) And mm Month(Paques) Then ferie = True: Exit Function
Ascension = Paques + 38 'AscensionIf JJ Day(Ascension) And mm Month(Ascension) Then ferie = True: Exit Function
Pentecote = Ascension + 11 'PentecoteIf JJ Day(Pentecote) And mm Month(Pentecote) Then ferie = True: Exit Function
ferie = False
Dim numjour
numjour = WeekDay(Jour, vbMonday) 'fixe à 6 et 7 la valeur du samedi & dimancheIf numjour 6 Or numjour 7 Then ferie = True: Exit Function
End Function
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 6 mai 2005 à 10:09
Moi je veux bien t'aider, le problème, c'est quya pas bcp de monde qui
va prendre ton code, le mettre dans un prog et le tester pour voir ce
qui déconne, alors si tu nous aide pas un peu afin de cerner le
problème le plus rapidement possible, personne ne t'aidera...
A première vue, je vois rien qui cloche dans ton code, biensur, si tu
donnais des valeurs à mettre à la place des champs de formulaire et
surtout la commande qui te renvois une erreur, on pourrait peut
être t'aider...
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009 6 mai 2005 à 11:53
bonjour,
en faite le code marche bien, mais ce pas ce que je veut vraiment
" le but de code". en faite ce que je voudrais faire: cacul date fin "
brut" a partire de la date de debut et heure de debut, la quantité, et
le temps unitaire, le code peut faire ça sans problème. mais le
problème est les resultat n'est pas fiable. donc j'ai integré les deuc
fonction qui calcul le nombre de jour ouvré samedi et dimanche inclus,
et j'ajoute ce nombre de jour ouvré a la date de fin et il calcul
automatiquement la date de fin net. jusque le code peut faire ça.
mais si le nombre de jour ouvré dépasse 5 le resultat n'est plus fiable
car la date ne prend pas en compte le samedi et le dimanche.
si ta pas compri tu pe me posé des questions , car je sais que c'est un peut compliquer
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 7 mai 2005 à 11:19
En fait, si tu te relisais avant de poster, ça serait déjà un peu plus compréhensible...
Pour programmer quelque chose il faut savoir pourquoi on le fait. Avant
de trouver comment le faire. Pour ce que j'ai cru comprendre, tu as une
durée d'un truc qu'on sait pas de quoi il s'agit....
Tu veux avoir le nombre total de jours ouvrés contenue de cette durée.
Tu pourrais peut être commencer par calculer le nombre de jours total de la durée.
Ensuite, tu regarde à partir de quel jour commence ta période, lundi,
mardi, mercredi, jeudi ou vendredi. à partir de là, tu sais que si ça
commence un vendredi, les 2 jours suivant ne font pas parti des jours
ouvrés (donc -2) ensuite tu dis qu'une semaine contient 5 jours ouvrés,
donc tu enlèves 2 jr par semaines contenues dans ta durée
systématiquement. Tu auras déjà un nombre total de jours
potentiellement ouvrés. Il ne te reste plus qu'à vérifié si dans cette
durée il ya des jours fériés et si c derniers tombent en pleine
semaine. Voilà, à toi de jouer.
TBBUIM