Nombre de dimanche dans l'année

yassoux

XLDnaute Nouveau
Bonjour,
je suis entrain de développer une petite application sur vba excel, qui demande beaucoup de manipulations avec les dates, dans le cas présent je ne dois effectuer un calcul sous de multiple conditions et contraintes de dates ....

1ère contrainte si l'année est une année normale à 52 dimanche
2ème contrainte si l'année est une année normale à 53 dimanche
3ème contrainte si l'année est une année bissextile à 52 dimanche
4ème contrainte si l'année est une année bissextile à 53 dimanche

oui c'est compliqué tous sa ^^ donc pour le moment je ne vous demande pas de me trouver une solution tout cuit à mon problème, car j'ai quand même essayer d'avance avant ^^

donc pour commencer voila ma macro pour connaitre si l'année est bissextile ou non :
Code:
If annee.Text / 4 = Int(annee.Text / 4) Then
MsgBox "bissextile"
Else
MsgBox " non bissextile"
End If
rien de plus simple...

par contre pour ce qui est du calcul du nombre de dimanche dans une année :eek:
j'ai trouver une fonction excel qui y arrive :
Code:
=SI(JOURSEM(A9)=1;1;0)
cette formules va chercher la date en A1 et retourne 1 si c'est un dimanche, 0 si non...
j'aimerais bien trouver quelque chose de similaire en vba ^^

Je reste dispo pour tout autre question bien sur :D
Merci d'avance
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nombre de dimanche dans l'année

Bonjour,

Code:
If annee.Text / 4 = Int(annee.Text / 4) Then
MsgBox "bissextile"
Else
MsgBox " non bissextile"
End If

Attention ! Si ton application est destinée à être utilisée sur une très large plage d'années, cette façon de tester n'est pas correcte. En effet, pour réajuster notre calendrier sur le soleil, on rajoute effectivement un jour tous les 4 ans. Mais comme ça fait trop, on en supprime 3 tous les 4 siècles il me semble.

En fait la règle c'est :
Une année est bissextile (elle possède un 29 février) si son millésime est divisible par 4 (ex: 1904 1980 1996), mais pas par 100 (ex: 1900), à moins qu'il soit divisible par 400 (ex: 2000), sauf s'il est divisible par 4000 (ex: 4000 8000 12000 ).

C'est pour ça que 2000 était bisextile mais que 2100, 2200 et 2300, bien que divisibles par 4, ne le seront pas.

Mais bon, tout cela n'a d'importance que si tu utilise une vaste plage de dates (je suis pas censé savoir que tu es pas archéologue :p)
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nombre de dimanche dans l'année

Sinon pour répondre quand même à ta question, est ce que tu pourrais pas base ton calcul sur le 1er jour de l'année en sachant que :

si année bisextile alors : 52.28 semaines dans l'année
si le premier jour de l'année est un lundi, le dernier sera un ... donc X dimanches dans l'année.......

Je sais pas si c'est faisable comme ça mais ça me paraît être un bon moyen d'aborder le problème.
 

tototiti2008

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour Yassou, Bonjour GeoTrouvePas,

Toujours intéressant de connaitre les règles exactes ;)

sinon la traduction VBA de

Code:
=SI(JOURSEM(A9)=1;1;0)

est

Code:
iif(Weekday(Date1)=1,1,0)

Avec Date1 une variable Date qu'il conviendra de faire varier dans une boucle, je pense

Mais l'idée de GeoTrouvePas est la bonne, le tout est de trouver la formule exacte s'appliquant à tous les cas...
 

MJ13

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour à tous

Sachant que quelque soit l'année, il y aura 52 ou 53 dimanche avec 53 dimanche si le premier jour de l'année est un dimanche.

Bon cela a déjà été dit :eek:, mais pour moi c'est plus simple à comprendre et à traduire.

Ce qui donne en formule avec la date en A1:

Code:
=SI(JOURSEM(DATE(ANNEE(A1);1;1))=1;"53";52)

Pour le traduire en VBA, il faudra utiliser l'enregistreur de macros.
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour MJ13,
Re,

On dirait que les années bissextiles commençant un samedi ont aussi 53 dimanches...

un essai :
 

Pièces jointes

  • Classeur1.xls
    19 KB · Affichages: 256
  • Classeur1.xls
    19 KB · Affichages: 265
  • Classeur1.xls
    19 KB · Affichages: 266

tototiti2008

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour hoerwind,
Re,

Oui, c'est plus simple mais il faut connaitre la règle pour ça, et c'est le résultat de la formule qui a permis de déterminer la règle...:rolleyes:

Mais de toute façon il y a surement plus simple ;)
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Nombre de dimanche dans l'année

Bonjour à tous,

Perso, je déterminerais le premier dimanche de l'année et j'y ajouterais 364 jours ( 52X7)
- si la date trouvée appartient à la même année: conclusion il y a 53 dimanches dans l'année

- si la date trouvée n'appartient pas à la même année: conclusion il y a 52 dimanches dans l'année

à+
Philippe
 

MJ13

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Re à tous

Comme je suis nul en formule, voici une logique formulistique.

Tibo, si t'es pas loin, on peut abréger (mes souffrances) :).

J'ai pas testé toutes les dates, mais si la logique est bonne, cela devrait le faire.

Mais bon, il doit y avoir plus simple (Ro.er peut-être ;)).
 

Pièces jointes

  • NB_Dimanche_Annee_MJ.xls
    32 KB · Affichages: 201
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour à tous,

Bon, tout ceci confirme la règle :
si le 1er janvier est un dimanche, 53 dimanches
si le 1er janvier est un samedi et l'année est bissextile, 53 dimanches
dans tous les autres cas, 52 dimanches
 

ROGER2327

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Bonjour à tous
Avec l'année en A1 :
Code:
[COLOR="DarkSlateGray"][B]=52+(JOURSEM(DATE(A1;1;1))=1)+SOMME((MOD(A1;{4;100;400})=0)*{1;-1;1})*(JOURSEM(DATE(A1;1;1))=7)[/B][/COLOR]
(formule matricielle)

ROGER2327
#3874


Mardi 24 Gidouille 137 (Saint Gris-gris, ventre, SQ)
20 Messidor An CCXVIII
2010-W27-4T11:45:39Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Nombre de dimanche dans l'année

Suite...
Ou encore, avec 1/1/année en A1 :
Code:
[COLOR="DarkSlateGray"][B]=52+(JOURSEM(D1)=1)+SOMME((MOD(ANNEE(D1);{4;100;400})=0)*{1;-1;1})*(JOURSEM(D1)=7)[/B][/COLOR]
(formule matricielle)

ROGER2327
#3875


Mardi 24 Gidouille 137 (Saint Gris-gris, ventre, SQ)
20 Messidor An CCXVIII
2010-W27-4T11:52:51Z
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
329

Statistiques des forums

Discussions
312 104
Messages
2 085 339
Membres
102 865
dernier inscrit
FreyaSalander