Salutations!
Voila j'ai un data gridview avec plusieurs colonnes dont deux qui sont des dates.
je veux faire la différence de ces deux dates avec les jours fériés et d'autres paramètres.
Je m'y prend comme cela :
et voila mes deux petites fonctions récupérée et remixée à ma sauce :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 oTable.Columns.Add("Ecart", Type.GetType("System.Double")) Dim oRow As DataRow For Each oRow In oTable.Rows oRow("Ecart") = nbjourouvrable(oRow("DLVDAT_0"), oRow("XDLIVDEM_0"), oRow("XBQABR_0")) Next oRow
qui elle appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36 Public Function nbjourouvrable(ByRef deb As Date, ByRef fin As Date, ByVal Trig As String) As Double Dim nbJourtot As Double Dim i As Integer If deb = fin Then nbJourtot = 0 If Trig = "CCF" Then nbJourtot = nbJourtot + 4 Else nbJourtot = nbJourtot + 2 End If Else nbJourtot = DateDiff(DateInterval.Day, deb, fin) '+ 1 For i = 1 To nbJourtot If ferie(deb) = True Then nbJourtot = nbJourtot + 1 End If fin = Today.AddDays(1) Next i If Trig = "CCF" Then nbJourtot = nbJourtot + 4 Else nbJourtot = nbJourtot + 2 End If End If Return nbJourtot End Function
en principe tout marche bien sauf une chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40 Function ferie(ByVal Jour As Date) As Boolean Dim JJ, MM, AA As Integer Dim NbOr, Epacte As Integer Dim PLune, Paques, Ascension As Date JJ = Jour.Day MM = Jour.Month AA = Jour.Year If JJ = 1 And MM = 1 Then Return True '1 Janvier If JJ = 1 And MM = 5 Then Return True '1 Mai If JJ = 8 And MM = 5 Then Return True '8 Mai If JJ = 14 And MM = 7 Then Return True '14 Juillet If JJ = 15 And MM = 8 Then Return True '15 Août If JJ = 1 And MM = 11 Then Return True '1 Novembre If JJ = 11 And MM = 11 Then Return True '11 Novembre If JJ = 25 And MM = 12 Then Return True '25 Décembre NbOr = (AA Mod 19) + 1 Epacte = CType((11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30, Integer) PLune = CDate("19/04/" & AA) PLune = PLune.AddDays(-((Epacte + 6) Mod 30)) If Epacte = 24 Then PLune = PLune.AddDays(-1) If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune.AddDays(-1) 'Paques Paques = PLune.AddDays(-Weekday(PLune) + vbMonday + 7) If JJ = Paques.Day And MM = Paques.Month Then Return True 'Ascension Ascension = Paques.AddDays(38) If JJ = Ascension.Day And MM = Ascension.Month Then Return True Dim numjour numjour = Weekday(Jour, vbMonday) 'fixe à 6 et 7 la valeur du samedi & dimanche If numjour = 6 Or numjour = 7 Then Return True End Function
lorsque je fait du pas à pas je remarque que les dates récupérée sont de cette forme : #1/5/2006# alors que mon code code (dsl pour la répétition)
pour des dates de ce format : 05/01/2006...
Voila, donc si vous avez une réponse j'enserai ravi!
Thanks!
Partager