OVH Cloud OVH Cloud

format conditionel pour weekd end/feriee avec table des jours feriee

3 réponses
Avatar
Thierry
bonjour

Je travail en angola, pour une association humanitaire et je dois creer une
feuille de presence par employe, avec le sit ouaib de disciplus simplex j'ai
bien avance mais j'ai un probleme les jours ferie ne corresponde pas, vue
que l'angola a 14 jours ferier et que si un jour ferie ce trouve un week end
il est reporter au Lundi .....

j'ai don une page unique il suffit de changer le mois pour mettre les week
end etc... en couleur
Comment faire pour que le format conditionnal puisse fonctionner avec des
jours ferie specific ?? par exemple en regardant dans un table ?? (comme ca
une fois par an il suffit de changer la date des jours ferier de l'annee
-) )

merci

thierry

3 réponses

Avatar
Pascal
Salut,
Tu peux faire cela. A toi de rajouter tes jours spécifiques avec les
paramètres Date Sérial .
par exemple DateSérial(A,7,14). ou A est = à une zone nommée correspondant à
une année, 7 le mois, et 14 le jour.
Ici 14/07/2003 si dans ta case A tu as saisie 2003.
Après si par exemple chez toi le 5 mai est férié, tu rajoutes cette ligne:
Case Is= DateSerial (A,1,5).
La fonction TYPEJOUR te renvoie 2 si le jour est férié


TYPEJOUR(D As Date)


DiFunctionm A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D) If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function

"Thierry" a écrit dans le message de
news:Oa%
bonjour

Je travail en angola, pour une association humanitaire et je dois creer
une

feuille de presence par employe, avec le sit ouaib de disciplus simplex
j'ai

bien avance mais j'ai un probleme les jours ferie ne corresponde pas, vue
que l'angola a 14 jours ferier et que si un jour ferie ce trouve un week
end

il est reporter au Lundi .....

j'ai don une page unique il suffit de changer le mois pour mettre les week
end etc... en couleur
Comment faire pour que le format conditionnal puisse fonctionner avec des
jours ferie specific ?? par exemple en regardant dans un table ?? (comme
ca

une fois par an il suffit de changer la date des jours ferier de l'annee
-) )

merci

thierry





Avatar
Thierry
merci je vais regarder ca
"Pascal" wrote in message
news:
Salut,
Tu peux faire cela. A toi de rajouter tes jours spécifiques avec les
paramètres Date Sérial .
par exemple DateSérial(A,7,14). ou A est = à une zone nommée correspondant
à

une année, 7 le mois, et 14 le jour.
Ici 14/07/2003 si dans ta case A tu as saisie 2003.
Après si par exemple chez toi le 5 mai est férié, tu rajoutes cette ligne:
Case Is= DateSerial (A,1,5).
La fonction TYPEJOUR te renvoie 2 si le jour est férié


TYPEJOUR(D As Date)


DiFunctionm A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D) If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function

"Thierry" a écrit dans le message de
news:Oa%
bonjour

Je travail en angola, pour une association humanitaire et je dois creer
une

feuille de presence par employe, avec le sit ouaib de disciplus simplex
j'ai

bien avance mais j'ai un probleme les jours ferie ne corresponde pas,
vue


que l'angola a 14 jours ferier et que si un jour ferie ce trouve un week
end

il est reporter au Lundi .....

j'ai don une page unique il suffit de changer le mois pour mettre les
week


end etc... en couleur
Comment faire pour que le format conditionnal puisse fonctionner avec
des


jours ferie specific ?? par exemple en regardant dans un table ?? (comme
ca

une fois par an il suffit de changer la date des jours ferier de l'annee
-) )

merci

thierry









Avatar
AV
Une solution :
Une plage nommée "Frs" contenant les jours fériés dans laquelle seront fait,
pour l'année en cours, les calculs concernant les jours fériés et notamment le
problème de ceux tombant un WE qui sont à reporter au lundi qui suit
Exemple de jours fériés et de calcul à mettre dans la plage "Jfrs"
Supposons, pour des dates fixes, que le 1 Janvier et le 12 avril de l'année en
cours soit fériés --> formules :
=SI((JOURSEM(DATE(ANNEE(AUJOURDHUI());1;1);2)>5);DATE(ANNEE(AUJOURDHUI());1;1)-J
OURSEM(DATE(ANNEE(AUJOURDHUI());1;1)-1)+8;DATE(ANNEE(AUJOURDHUI());1;1))
=SI((JOURSEM(DATE(ANNEE(AUJOURDHUI());4;12);2)>5);DATE(ANNEE(AUJOURDHUI());4;12)
-JOURSEM(DATE(ANNEE(AUJOURDHUI());4;12)-1)+8;DATE(ANNEE(AUJOURDHUI());4;12))
Etc..pour chacune des dates fixes ou mobiles en changeant la partie
..DATE(ANNEE(AUJOURDHUI());1;1) dans la formule

Ensuite, avec tes dates en A1:A31 :
Sélection A1:A31 --> MFC --> la formule est :
=ET(A1<>"";OU(JOURSEM(A1;2)>5;ESTNUM(EQUIV(A1;Jfrs;0))))
--> motif --> ok

AV