Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
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 04/12/2007, 17h47   #1
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
Par défaut Nbr de jour ouvrable

Bonjour,

Je cherche comment calculer le nbr de jour ouvrable dans un mois.

Je veux faire une fonction.

ma fonction(chiffre du mois, annee du mois) et elle me retourne le nbr de jour sans les samedi et dimanche.

J'ai réussi avec tous les jours mais je trouve pas comment enlever les week-end.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Function NbJourDansMois(LeMois, LeAnnee)
	Select Case (LeMois)
		'Avril, Juin, Septembre, Novembre
		Case 4, 6, 9, 11
			NbJourDansMois = 30
		' Février
		Case 2
			' Si Divisible par 400 alors Bisextile
			if (LeAnnee Mod 4 = 0) And (LeAnnee Mod 100 <> 0) Or (LeAnnee Mod 400 = 0) Then
				NbJourDansMois = 29
			Else
				NbJourDansMois = 28
			End if
		' Les autres mois
		Case Else
			NbJourDansMois = 31
	End Select
End Function
je vous remerci d'avance.
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 21h38   #2
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 857
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 857
Points : 5 975
Points : 5 975
Salut,

J'aurais fait plutôt un truc du genre:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function NbJourOuvresDansMois(LeMois, LeAnnee)
     Dim LeJour, NbJourOuvre
     LeJour = cdate("01/" & LeMois & "/" & LeAnnee)
     NbJourOuvre = 0
     do while Month(LeJour) <= LeMois
          LeJour = dateadd("d", 1, LeJour)
          Select case weekday(LeJour)
               case 2, 3, 4, 5, 6
                      NbJourOuvre = NbJourOuvre + 1
               case else
 
          End Select
     Loop
     NbJourOuvresDansMois = NbJourOuvre
End Function
Attention de bien verifier que la date traitée par le serveur est au format FR. Dans le cas contraire inverser le jour et mois. Ou encore mettre la date au format US YYYYY/MM/DD. Comme ça pas de lézard.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 08h01   #3
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
Voilà,

j'ai modifié avec ta fonction.

mais j'ai une erreur de type.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
MOIS HEURES/MOIS  HEURES OBLIGATOIRES Heure sup/MOIS  
Août 
 167,25 h
 22 j
 145,25 h
 
Septembre 
 74,5 h
 21 j
 53,5 h
 
Octobre 
 238 h
 23 j
 215 h
 
Novembre 
 158,25 h
 21 j
 137,25 h
 
Décembre 
 17,25 h
 
Microsoft VBScript runtime error '800a0005' 
 
Invalid procedure call or argument: 'dateadd' 
 
/timesheet/heure_sup.asp, line 47
et la ligne 47
Code :
1
2
 
 LeJour = dateadd("d", 1, LeJour)
Et aparrament le nombre de jours est faux par mois ?
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 08h15   #4
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
Je vois une autre erreur :

Code :
1
2
 
  LeJour = dateadd("d", 1, LeJour)
Et on défini que le jour commence a 1;
Donc on passe directement le 2 de chaque mois ?? non
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 08h25   #5
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
Par défaut résolu

Voilà j'ai trouve les erreurs

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function NbJourOuvresDansMois(LeMois, LeAnnee)
     Dim LeJour, NbJourOuvre
     LeJour = cdate(LeAnnee & "/" & LeMois & "/01")


     NbJourOuvre = 0
     do while Month(LeJour) = LeMois
          Select case weekday(LeJour)
               case 2, 3, 4, 5, 6
                      NbJourOuvre = NbJourOuvre + 1
               case else
                      
          End Select
          LeJour = dateadd("d", 1, LeJour)     Loop
     NbJourOuvresDansMois = NbJourOuvre
End Function
Merci a tous
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h25.


 
 
 
 
Partenaires

Hébergement Web