Jours fériés suite (par monique)

  • Initiateur de la discussion nonothedoc@yahoo.fr
  • Date de début
N

nonothedoc@yahoo.fr

Guest
Bonjour a tous,

Pour monique surtout (),

il y a quelque temps, tu m'avais envoyé un fichier avec les jours fériés.
j'ai adapté et j'ai appris.

mais le problème maintenant est le suivant :

si le samedi ( ou le dimanche) deviennent fériés , alors le résultat devient faux pour les jours de semaine.

je te renvoie ton fichier avec les commentaires et explications.

N.B: pour le dimanche, ce n'est pas grave car je considère comme un jour férié si nécessaire, et donc je n'ai jamais de 1 dans la colonne adjacente.
 

Pièces jointes

  • joursferiessuite.zip
    4.8 KB · Affichages: 44
M

Monique

Guest
Bonjour,

Tu as 2 solutions dans le fichier joint,
plus une plage de fériés bidon pour que tu puisses faire plus facilement des essais.

En colonne A : chiffre 1 si c'est un samedi, un dimanche ou un férié.
Sinon : 0
Sauf que tu ne voulais le chiffre 1 que pour les fériés.

Autre possibilité en colonne A : 1 si c'est un férié,
0,000001 si c'est un samedi ou un dimanche (format nombre sans décimales)
Sinon : 0
Samedi ou dim férié : 1
Sam ou dim non férié : 0,000001
 

Pièces jointes

  • FeriesArnaudV1.zip
    4.3 KB · Affichages: 64
C

Coyote

Guest
Je n'ai pas la solution mais une formule simplifiée pour le calcul du jour de Pâques.

=ARRONDI(DATE(an;4;MOD(234-11*MOD(an;19);30))/7;)*7-6

Quelqu'un du forum aurait laissé entendre qu'elle ne marche pas au delà de 2049.

Enfin d'ici là, on nous l'aura supprimé ce jour férié
 
M

Monique

Guest
Bonjour,

Ce n'est pas qu'elle ne marche pas au-delà de 2049, c'est qu'elle ne marche pas en 2049 ni en 2076.
Ne marche pas non plus si l'option "Calendrier depuis 1904" est cochée.
C'est tout, mais tant qu'à utiliser une formule, autant utiliser celle qui donne le moins d'erreurs.

Il existe plusieurs formules pour le calcul de la date de Pâques
mais elles donnent toutes des résultats faux si l'option "Calendrier depuis 1904" est cochée.
et en 2079 pour la plupart, le résultat n'est pas bon, que l'on soit sur l'option 1904 ou non.
C'est celle du classeur d'Arnaud qui est la plus fiable, compatible 1900 1904, mais la plus longue !

Dans le classeur "Dates et Heures", on a essayé de faire l'inventaire de toutes les formules de la dates de Pâques :
<http://www.excel-downloads.com/html/French/fichiers/programmation-date_maj-1.htm>
 
J

Jean-Marie

Guest
Bonjour

La fonction de coyote peut-être utilisée avec l'option "Calendrier depuis 1904", en remplaçant le -6 par -5 en fin de formule.
Cela est due à un problème avec l'option 1900.
Les valeurs "numériques" des dates du 1er janvier 1900 au 28 février 1900 correspondent aux valeurs numériques des dates avec l'option 1904 de cochée (avec 4 ans d'écart, normal). Après cela ce gâte, il y a une date inexistante dans notre calendrier, le 29 février 1900, ce qui génère un décalage d'un jour entre l'option 1900 et 1904, voilà pour la petite histoire.

@+Jean-Marie
 
M

Monique

Guest
Re,

Pour que la formule de Coyote soit compatible calendriers 1900 et 1904
et qu'elle de donne pas un résultat faux en 2049 et en 2076 (6 jrs ou 7 jours d'écart selon l'option calendrier) :

=ARRONDI(DATE(B$1;4;MOD(234-11*MOD(B$1;19);30))/7;)*7-6+(TEXTE(1;"j")="2")-(B$1=2076)*7-(B$1=2049)*7

Mais pour Excel anglais il faut TEXTE(1;"d") en plus de TEXTE(1;"j") et ça donne (rait ?) :
=ARRONDI(DATE(B$1;4;MOD(234-11*MOD(B$1;19);30))/7;)*7-6+(TEXTE(1;"j")="2")+(TEXTE(1;"d")="2")-(B$1=2076)*7-(B$1=2049)*7

Calendrier 1900 =TEXTE(1;"j") donne 1
Calendrier 1904 =TEXTE(1;"j") donne 2
 
D

djeman

Guest
Voila g pris votre formule pour le jour de paques mais le probleme c que j'aimerai le calculer entierement en code et non pas en posant une formule dans une cellule.

Alors si qq'un pourrait m'aider à la transformer ce serait sympa :)

La formule que g c celle la :

=DATE(A$5;SI((25-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29)-MOD(A$5-1900+ENT((A$5-1900)/4)+31-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29);7))>0;4;3);SI((25-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29)-MOD(A$5-1900+ENT((A$5-1900)/4)+31-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29);7))>0;(25-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29)-MOD(A$5-1900+ENT((A$5-1900)/4)+31-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29);7));31+(25-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29)-MOD(A5-1900+ENT((A$5-1900)/4)+31-MOD((11*MOD(A$5-1900;19)+4-ENT((7*MOD(A$5-1900;19)+1)/19));29);7))))

Merci d'avance
 
D

djeman

Guest
euh excusez moi g oublier de dire que j'avais commencer à transformer :

donc l'année c la variable d'entrée cellule A5 mais moi je veux que ça soit la variable "c"

et le mois cela donne :
ActiveCell.FormulaR1C1 = _
"=IF((25-MOD((11*MOD(" & c & "-1900,19)+4-INT((7*MOD(" & c & "-1900,19)+1)/19)),29)-MOD(" & c & "-1900+INT((" & c & "-1900)/4)+31-MOD((11*MOD(" & c & "-1900,19)+4-INT((7*MOD(" & c & "-1900,19)+1)/19)),29),7))>0,4,3)"

me manque plus que le jour
 
D

djeman

Guest
Ben j'abandonne ma question car je pense avoir trouver au cas ou ça aiderait qq'un :

jour de paques :

Public Function Jour_Paques(An As Integer) As Date

Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer
Dim g As Integer, h As Integer, i As Integer, j As Integer, k As Integer, l As Integer
Dim m As Integer, n As Integer, p As Integer

a = An Mod 19
b = An \ 100
c = An Mod 100
d = b \ 4
e = b Mod 4
f = (b + 8) \ 25
g = (b - f + 1) \ 3
h = (19 * a + b - d - g + 15) Mod 30
i = c \ 4
k = c Mod 4
l = (32 + 2 * e + 2 * i - h - k) Mod 7
m = (a + 11 * h + 22 * l) \ 451
n = (h + l - 7 * m + 114) \ 31
p = (h + l - 7 * m + 114) Mod 31
Jour_Paques = DateSerial(An, n, p + 1)
End Function
 
P

Pascal76

Guest
Salut

Tiens voilà une formule qui te donne le lundi de Pâques

A = Year(MaDate)
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)


Bon courage

Pascal
 
H

Hervé

Guest
resalut tlm



j'ai trouvé cette formule pour le lundi de paques en excel 2002 :

=DIMPAQUES(Année;Format)


- Année (nombre) : année désirée.

- Format (texte, facultatif) : format de la date à renvoyer (par exemple, "jjjj jj mmmm aaaa"). Par défaut : nombre.

par contre je ne sais pas si elle tiens compte du décalage expliquer par jean-marie.

bye bye
Hervé
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 008
Membres
103 699
dernier inscrit
samSam31