Pourquoi la formule Excel "=3DJOUR(58)" donne 27 et la=20
formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la m=EAme chose ?
-On m'a r=E9pondu (si j'ai bien compris) que la cause=20
venait d'Excel qui consid=E8re (pour d'obscures raisons)=20
que l'ann=E9e 1900 est bissextile alors qu'elle ne l'ai=20
pas. A partir de l'ann=E9e 1904 tout rentrerait dans=20
l'ordre, le calendrier d'Excel concorderait avec le=20
calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la=20
formule : =AB =3DFRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"&=20
A1)/7;)*7-6 =BB (je ne sais plus qui l'=E0 fait ) =3D> cette=20
formule calcul le jour de p=E2ques de l'ann=E9e qui est=20
inscrite dans la cellule A1.
2 : Sur le forum, on m'a donn=E9 cette Fonction pour=20
calculer P=E2que en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer
D =3D (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) +=20
21
FirstDayOfEaster =3D DateSerial(InputYear, 3, 1) + D +=20
(D > 48) + 6 - ((InputYear + InputYear \ 4 + D + (D > 48)=20
+ 1) Mod 7)
End Function
3 : J'ai converti litt=E9ralement la fonction Excel en VBA=20
ce qui donne :
4 : Pour v=E9rifier la fiabilit=E9 de ces solutions j'ai fait=20
ces deux macro :
1=E8re Macro :
Sub Main2()
Dim i As Integer
For i =3D 1900 To 2056
a =3D CStr(CDate(FirstDayOfEaster(i)))
b =3D CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day(Minute
(i / 38) / 2 + 55))) / 7)) * 7 - 6))
If a <> b Then
MsgBox (Str(i))
=20
End If
Next i
End Sub
2=E8me Macro :
Sub Main3()
Dim i As Integer
For i =3D 1900 To 2079
Range("A2").Value =3D i
a =3D CStr(CDate(FirstDayOfEaster(i)))
b =3D CStr(Range("B2").Value)
If a <> b Then
MsgBox (Str(i))
=20
End If
Next i
End Sub
La deuxi=E8me Macro me dit qu'il y a une erreur pour=20
l'ann=E9e 2079 et la premi=E8re m'indique pleins d'erreurs (=20
la premi=E8re erreur appara=EEt en 1943).
- Les erreurs doivent venir de l'utilisation des=20
commandes JOUR et Day. Ce que je voudrais savoir, c'est=20
qu'elle est la bonne formule ? (j'ai pas trop confiance =E0=20
la fonction Excel car elle utilise la fonction JOUR mais=20
peut-=EAtre que la personne qui a =E9crit cette formule=20
savait exactement ce qu'il faisait)=20
Remarque : je ne me rappel plus jusqu'=E0 quelle date les=20
fonctions ne marchent plus : l'erreur de la deuxi=E8me=20
Macro est peut-=EAtre du =E0 =E7a.
PS : Je voulais juste dire Merci =E0 toutes les personnes=20
qui m'avait r=E9pondues pr=E9c=E9demment.
Il compare les résultats de 4 formules et 2 fonctions VBA pour le calcul du jour de Pâques. Dont celles que tu as testées de ton côté. Il faut savoir qu'auncune d'entre elles ne donne un résultat exact à tous les coups dans l'étendue des dates valides d'Excel (ie jusqu'au 31/12/9999 actuellement). Des résultats corrects jusqu'en 2078 me semblent une précision acceptable (c'est quand même dans 75 ans, il aura coulé de l'eau sous les ponts d'ici là !). La formule de N Hetterich a cette précision (=FRANC((JOUR(MINUTE etc..). Au-delà, la formule de JP Mesters et les fonctions VBA sont fiables sur de plus longues durées (fais des tests je n'ai plus les résultats en tête). L'une ou l'autre de ces 3 dernières options devraient pouvoir te convenir (personnellement j'utilise la plupart du temps la formule de JP Mesters, qui a de plus l'avantage, pour l'usage que j'en fais, d'être insensible au calendrier du classeur).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause venait d'Excel qui considère (pour d'obscures raisons) que l'année 1900 est bissextile alors qu'elle ne l'ai pas. A partir de l'année 1904 tout rentrerait dans l'ordre, le calendrier d'Excel concorderait avec le calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"& A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette formule calcul le jour de pâques de l'année qui est inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21 FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D + (D > 48) + 6 - ((InputYear + InputYear 4 + D + (D > 48) + 1) Mod 7)
End Function
3 : J'ai converti littéralement la fonction Excel en VBA ce qui donne :
4 : Pour vérifier la fiabilité de ces solutions j'ai fait ces deux macro :
1ère Macro : Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day(Minute (i / 38) / 2 + 55))) / 7)) * 7 - 6)) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(Range("B2").Value) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour l'année 2079 et la première m'indique pleins d'erreurs ( la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des commandes JOUR et Day. Ce que je voudrais savoir, c'est qu'elle est la bonne formule ? (j'ai pas trop confiance à la fonction Excel car elle utilise la fonction JOUR mais peut-être que la personne qui a écrit cette formule savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les fonctions ne marchent plus : l'erreur de la deuxième Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes qui m'avait répondues précédemment.
Il compare les résultats de 4 formules et 2 fonctions VBA pour le calcul du jour
de Pâques. Dont celles que tu as testées de ton côté.
Il faut savoir qu'auncune d'entre elles ne donne un résultat exact à tous les
coups dans l'étendue des dates valides d'Excel (ie jusqu'au 31/12/9999
actuellement).
Des résultats corrects jusqu'en 2078 me semblent une précision acceptable (c'est
quand même dans 75 ans, il aura coulé de l'eau sous les ponts d'ici là !). La
formule de N Hetterich a cette précision (=FRANC((JOUR(MINUTE etc..).
Au-delà, la formule de JP Mesters et les fonctions VBA sont fiables sur de plus
longues durées (fais des tests je n'ai plus les résultats en tête). L'une ou
l'autre de ces 3 dernières options devraient pouvoir te convenir
(personnellement j'utilise la plupart du temps la formule de JP Mesters, qui a
de plus l'avantage, pour l'usage que j'en fais, d'être insensible au calendrier
du classeur).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la
formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause
venait d'Excel qui considère (pour d'obscures raisons)
que l'année 1900 est bissextile alors qu'elle ne l'ai
pas. A partir de l'année 1904 tout rentrerait dans
l'ordre, le calendrier d'Excel concorderait avec le
calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la
formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"&
A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette
formule calcul le jour de pâques de l'année qui est
inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour
calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer
D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) +
21
FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D +
(D > 48) + 6 - ((InputYear + InputYear 4 + D + (D > 48)
+ 1) Mod 7)
End Function
3 : J'ai converti littéralement la fonction Excel en VBA
ce qui donne :
4 : Pour vérifier la fiabilité de ces solutions j'ai fait
ces deux macro :
1ère Macro :
Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i)))
b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day(Minute
(i / 38) / 2 + 55))) / 7)) * 7 - 6))
If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i
a = CStr(CDate(FirstDayOfEaster(i)))
b = CStr(Range("B2").Value)
If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour
l'année 2079 et la première m'indique pleins d'erreurs (
la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des
commandes JOUR et Day. Ce que je voudrais savoir, c'est
qu'elle est la bonne formule ? (j'ai pas trop confiance à
la fonction Excel car elle utilise la fonction JOUR mais
peut-être que la personne qui a écrit cette formule
savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les
fonctions ne marchent plus : l'erreur de la deuxième
Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes
qui m'avait répondues précédemment.
Il compare les résultats de 4 formules et 2 fonctions VBA pour le calcul du jour de Pâques. Dont celles que tu as testées de ton côté. Il faut savoir qu'auncune d'entre elles ne donne un résultat exact à tous les coups dans l'étendue des dates valides d'Excel (ie jusqu'au 31/12/9999 actuellement). Des résultats corrects jusqu'en 2078 me semblent une précision acceptable (c'est quand même dans 75 ans, il aura coulé de l'eau sous les ponts d'ici là !). La formule de N Hetterich a cette précision (=FRANC((JOUR(MINUTE etc..). Au-delà, la formule de JP Mesters et les fonctions VBA sont fiables sur de plus longues durées (fais des tests je n'ai plus les résultats en tête). L'une ou l'autre de ces 3 dernières options devraient pouvoir te convenir (personnellement j'utilise la plupart du temps la formule de JP Mesters, qui a de plus l'avantage, pour l'usage que j'en fais, d'être insensible au calendrier du classeur).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause venait d'Excel qui considère (pour d'obscures raisons) que l'année 1900 est bissextile alors qu'elle ne l'ai pas. A partir de l'année 1904 tout rentrerait dans l'ordre, le calendrier d'Excel concorderait avec le calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"& A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette formule calcul le jour de pâques de l'année qui est inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21 FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D + (D > 48) + 6 - ((InputYear + InputYear 4 + D + (D > 48) + 1) Mod 7)
End Function
3 : J'ai converti littéralement la fonction Excel en VBA ce qui donne :
4 : Pour vérifier la fiabilité de ces solutions j'ai fait ces deux macro :
1ère Macro : Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day(Minute (i / 38) / 2 + 55))) / 7)) * 7 - 6)) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(Range("B2").Value) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour l'année 2079 et la première m'indique pleins d'erreurs ( la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des commandes JOUR et Day. Ce que je voudrais savoir, c'est qu'elle est la bonne formule ? (j'ai pas trop confiance à la fonction Excel car elle utilise la fonction JOUR mais peut-être que la personne qui a écrit cette formule savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les fonctions ne marchent plus : l'erreur de la deuxième Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes qui m'avait répondues précédemment.
Emcy
Mecri ! ... tu viens de casser tous mes espoires : moi qui voulais créer la meilleures macro des 2 prochains millénaires ...c'est foutu :(
Il compare les résultats de 4 formules et 2 fonctions VBA pour le calcul du jour
de Pâques. Dont celles que tu as testées de ton côté. Il faut savoir qu'auncune d'entre elles ne donne un résultat exact à tous les
coups dans l'étendue des dates valides d'Excel (ie jusqu'au 31/12/9999
actuellement). Des résultats corrects jusqu'en 2078 me semblent une précision acceptable (c'est
quand même dans 75 ans, il aura coulé de l'eau sous les ponts d'ici là !). La
formule de N Hetterich a cette précision (=FRANC((JOUR (MINUTE etc..).
Au-delà, la formule de JP Mesters et les fonctions VBA sont fiables sur de plus
longues durées (fais des tests je n'ai plus les résultats en tête). L'une ou
l'autre de ces 3 dernières options devraient pouvoir te convenir
(personnellement j'utilise la plupart du temps la formule de JP Mesters, qui a
de plus l'avantage, pour l'usage que j'en fais, d'être insensible au calendrier
du classeur).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause venait d'Excel qui considère (pour d'obscures raisons) que l'année 1900 est bissextile alors qu'elle ne l'ai pas. A partir de l'année 1904 tout rentrerait dans l'ordre, le calendrier d'Excel concorderait avec le calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"& A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette formule calcul le jour de pâques de l'année qui est inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) +
21 FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D +
4 : Pour vérifier la fiabilité de ces solutions j'ai fait
ces deux macro :
1ère Macro : Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day (Minute
(i / 38) / 2 + 55))) / 7)) * 7 - 6)) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(Range("B2").Value) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour l'année 2079 et la première m'indique pleins d'erreurs (
la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des commandes JOUR et Day. Ce que je voudrais savoir, c'est qu'elle est la bonne formule ? (j'ai pas trop confiance à
la fonction Excel car elle utilise la fonction JOUR mais
peut-être que la personne qui a écrit cette formule savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les fonctions ne marchent plus : l'erreur de la deuxième Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes qui m'avait répondues précédemment.
.
Mecri !
... tu viens de casser tous mes espoires : moi qui
voulais créer la meilleures macro des 2 prochains
millénaires ...c'est foutu :(
Il compare les résultats de 4 formules et 2 fonctions
VBA pour le calcul du jour
de Pâques. Dont celles que tu as testées de ton côté.
Il faut savoir qu'auncune d'entre elles ne donne un
résultat exact à tous les
coups dans l'étendue des dates valides d'Excel (ie
jusqu'au 31/12/9999
actuellement).
Des résultats corrects jusqu'en 2078 me semblent une
précision acceptable (c'est
quand même dans 75 ans, il aura coulé de l'eau sous les
ponts d'ici là !). La
formule de N Hetterich a cette précision (=FRANC((JOUR
(MINUTE etc..).
Au-delà, la formule de JP Mesters et les fonctions VBA
sont fiables sur de plus
longues durées (fais des tests je n'ai plus les
résultats en tête). L'une ou
l'autre de ces 3 dernières options devraient pouvoir te
convenir
(personnellement j'utilise la plupart du temps la
formule de JP Mesters, qui a
de plus l'avantage, pour l'usage que j'en fais, d'être
insensible au calendrier
du classeur).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la
formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause
venait d'Excel qui considère (pour d'obscures raisons)
que l'année 1900 est bissextile alors qu'elle ne l'ai
pas. A partir de l'année 1904 tout rentrerait dans
l'ordre, le calendrier d'Excel concorderait avec le
calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la
formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"&
A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette
formule calcul le jour de pâques de l'année qui est
inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour
calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer
D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod
30) +
21
FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D
+
4 : Pour vérifier la fiabilité de ces solutions j'ai
fait
ces deux macro :
1ère Macro :
Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i)))
b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day
(Minute
(i / 38) / 2 + 55))) / 7)) * 7 - 6))
If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i
a = CStr(CDate(FirstDayOfEaster(i)))
b = CStr(Range("B2").Value)
If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour
l'année 2079 et la première m'indique pleins d'erreurs
(
la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des
commandes JOUR et Day. Ce que je voudrais savoir, c'est
qu'elle est la bonne formule ? (j'ai pas trop
confiance à
la fonction Excel car elle utilise la fonction JOUR
mais
peut-être que la personne qui a écrit cette formule
savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les
fonctions ne marchent plus : l'erreur de la deuxième
Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes
qui m'avait répondues précédemment.
Il compare les résultats de 4 formules et 2 fonctions VBA pour le calcul du jour
de Pâques. Dont celles que tu as testées de ton côté. Il faut savoir qu'auncune d'entre elles ne donne un résultat exact à tous les
coups dans l'étendue des dates valides d'Excel (ie jusqu'au 31/12/9999
actuellement). Des résultats corrects jusqu'en 2078 me semblent une précision acceptable (c'est
quand même dans 75 ans, il aura coulé de l'eau sous les ponts d'ici là !). La
formule de N Hetterich a cette précision (=FRANC((JOUR (MINUTE etc..).
Au-delà, la formule de JP Mesters et les fonctions VBA sont fiables sur de plus
longues durées (fais des tests je n'ai plus les résultats en tête). L'une ou
l'autre de ces 3 dernières options devraient pouvoir te convenir
(personnellement j'utilise la plupart du temps la formule de JP Mesters, qui a
de plus l'avantage, pour l'usage que j'en fais, d'être insensible au calendrier
du classeur).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
-J'ai posé cette question :
Pourquoi la formule Excel "=JOUR(58)" donne 27 et la formule VBA "Day(58)" donne 26 ?
JOUR et Day ne font-ils pas la même chose ?
-On m'a répondu (si j'ai bien compris) que la cause venait d'Excel qui considère (pour d'obscures raisons) que l'année 1900 est bissextile alors qu'elle ne l'ai pas. A partir de l'année 1904 tout rentrerait dans l'ordre, le calendrier d'Excel concorderait avec le calendrier de Visual Basic.
1 : Maintenant, j'ai mis dans la cellule B1, la formule : « =FRANC((JOUR(MINUTE( A1 /38)/2+55)&"/4/"& A1)/7;)*7-6 » (je ne sais plus qui l'à fait ) => cette formule calcul le jour de pâques de l'année qui est inscrite dans la cellule A1.
2 : Sur le forum, on m'a donné cette Fonction pour calculer Pâque en VBA (je sais plus qui est l'auteur):
Function FirstDayOfEaster(InputYear As Integer) As Long
Dim D As Integer D = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) +
21 FirstDayOfEaster = DateSerial(InputYear, 3, 1) + D +
4 : Pour vérifier la fiabilité de ces solutions j'ai fait
ces deux macro :
1ère Macro : Sub Main2()
Dim i As Integer
For i = 1900 To 2056
a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(CDate(CDbl(CInt(DateSerial(i, 4, (Day (Minute
(i / 38) / 2 + 55))) / 7)) * 7 - 6)) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
2ème Macro :
Sub Main3()
Dim i As Integer
For i = 1900 To 2079
Range("A2").Value = i a = CStr(CDate(FirstDayOfEaster(i))) b = CStr(Range("B2").Value) If a <> b Then
MsgBox (Str(i))
End If
Next i
End Sub
La deuxième Macro me dit qu'il y a une erreur pour l'année 2079 et la première m'indique pleins d'erreurs (
la première erreur apparaît en 1943).
- Les erreurs doivent venir de l'utilisation des commandes JOUR et Day. Ce que je voudrais savoir, c'est qu'elle est la bonne formule ? (j'ai pas trop confiance à
la fonction Excel car elle utilise la fonction JOUR mais
peut-être que la personne qui a écrit cette formule savait exactement ce qu'il faisait)
Remarque : je ne me rappel plus jusqu'à quelle date les fonctions ne marchent plus : l'erreur de la deuxième Macro est peut-être du à ça.
PS : Je voulais juste dire Merci à toutes les personnes qui m'avait répondues précédemment.
.
Emcy
Merci !
-----Message d'origine-----
La deuxième Macro me dit qu'il y a une erreur pour l'année 2079
C'est un problème connu de la formule de LL
Une soluce parmi : =FRANC((JOUR(MINUTE($A$1/38)/2+55)&"/4/"&$A$1)/7;)*7-6+7* (A1 79)
AV
.
Merci !
-----Message d'origine-----
La deuxième Macro me dit qu'il y a une erreur pour
l'année 2079
C'est un problème connu de la formule de LL
Une soluce parmi :
=FRANC((JOUR(MINUTE($A$1/38)/2+55)&"/4/"&$A$1)/7;)*7-6+7*
(A1=2079)