Comment relier une procedure et deux fonction pour avoir une resultat unique..

h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009 - 4 mai 2005 à 10:41
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Derniè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 .....

8 réponses

skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
4 mai 2005 à 11:45
Salut h_adil,



il faudrait que tu donnes tes fonctions et procédures histoire de voir ce que l'on peut en faire.



A+
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
4 mai 2005 à 11:56
D'après ce que j'ai cru comprendre, tu voudrais utiliser la date obtenu
avec la première fonction pour calculer le temps exacte en jours ouvrés.

Beh, je ne vois pas le problème, si ta première fonction renvoi une date.

public function FinFrabication(param as jesaispas) as DATE

il ne te reste plus qu'à utiliser le résultat de cette fonction pour les autres, non?

C'est quoi le problème exactement, qu'entends tu par "relier les deux"?

TBBUIM
0
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009
4 mai 2005 à 12:01
voila le programme
complet .

Private Sub date_fin_Enter()
'le nombre de minute
Dim nbrmin As Double


'la partie entier du nombre de jour
Dim partieentiere As Integer


' la partie decimal de nombre de jour
Dim partiedecimale As Double


'la partie fixe de nombre de minute
Dim partiefixe As Integer


' le total de production par minute
Dim total As Double


'le nombre de jour
Dim nbrjour As Double


' la date de fin brut
Dim datefinbrut As Date


' la det de debut et date fin
Dim date1, date2 As Date
Dim nombrejour, nbjourtot As Double





total = [temps].Value * [quantité].Value
nbrmin = total / 60


nbrjour = nbrmin / 8


'partiefixe = Fix(nbrmin)
partieentiere = Int(nbrjour)
partiedecimale = (nbrjour - partieentiere) * 8


If nbrmin = 0 Then
[h fin].Value = "15/15/1515"
[date fin].Value = "00:00"


Else


If nbrmin 8 Then
MsgBox (nbrjour)
datefinbrut = DateAdd("d", partieentiere, [date debut].Value)

[h fin].Value = DateAdd("h", partiedecimale, [heure debut].Value)

End If
End If
End If









End Function


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

programation .....
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
4 mai 2005 à 14:34
Ca serait cool aussi que tu nous donnais, des valeurs à remplacer telle
que Temp.value, quantité.value, date debut, heure debut...

Et surtout la commande que tu lances qui utilise ces fonctions et qui plante.



Un moment tu écris ça

[h fin].Value = "15/15/1515"

[date fin].Value = "00:00"

ça serait pas l'inverse..? Mais ça n'a pas d'importance, c juste une remarque
TBBUIM
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
4 mai 2005 à 15:13
oui ta raison mais c'est pas ça le problème.
on ait la pour l'aide mutuelle c'est si tu sais klke chose tu me le dite moi idem
merci pour ta remarque

programation .....
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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...


TBBUIM
0
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 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



merci tbbuim

programation .....
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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
0
Rejoignez-nous