Journée comparable dans l'année précédente sur excel
Patrice33740 Messages postés 8400 Date d'inscription Statut Membre Dernière intervention -
j'ai besoin d'une fonction qui me renvoi la journée identique dans l'année précédente, par exemple: le 01/01/2013 est un mardi, donc je souhaite que excel me renvoi le 1er mardi du mois janvier 2012.
merci d'avance pour votre aide
10 réponses
Problème posé : déterminer en Excel la journée identique dans l'année précédente, par exemple le 01/01/2013, un mardi, et revenir comme le premier mardi de janvier 2012. Plusieurs contributions proposent des approches simples comme =A1-7*52, qui peut fonctionner mais échoue lors des années bissextiles lorsque le jour revient différemment, d'autres solutions robustes comparent le jour de la semaine et ajustent le calcul. Une piste pratique consiste à placer la date en A1, calculer le numéro du jour dans l'année courante et dans l'année précédente, puis ajuster avec des formules conditionnelles. Des échanges humoristiques et des spéculations sur des phénomènes spatiaux apparaissent, mais l'approche robuste visant à couvrir tous les cas inclut l'effet des 53 semaines et les décalages éventuels.
-
Bonjour,
Si la date est en A1, il suffit de faire :
=A1-7*52
-
-
Exact, Patrice, mais avec une incertitude d'une semaine !
Ainsi le 01/01/13 était un mardi, et 364 jours avant, le 03/01/12 était bien le 1er mardi de l'année.
Mais si tu pars du 06/01/2013, qui est un dimanche, ta formule nous aménera au 8 janvier 2012, alors que le premier dimanche était le premier janvier !
Il faut donc la compléter : =SI(JOUR(A1-7*52)>7;A1-7*53;A1-7*52)
Amicalement. -
Bonjour Raymond,
Il y a plusieurs façons d'interpréter la demande de Jalal :
=A1-7*52 permet de trouver le jour correspondant au 1er janvier précédent et les jours suivants
=SI(JOUR(A1-7*52)>7;A1-7*53;A1-7*52) pour trouver le jour correspondant dans la 1ère semaine de l'année précédente (1° lu, 1° ma, 1° me, ..). Ne fonctionne pas bien pour les semaines suivantes.
=SI(NO.SEMAINE(A6)=NO.SEMAINE(MOIS.DECALER(A6;-12));A6-7*52;A6-7*53) pour trouver le Xème jour correspondant de l'année précédente (par exemple le 3ème mardi).
Amicalement
Patrice -
-
-
-
Bonjour,
Une piste de travail :
Si date de cette année en A1
la formule 1
=JOURSEM(A1) donne le n° du jour de cette année
la formule 2
=JOURSEM(DATE(ANNEE(A1)-1;MOIS(A1);JOUR(A1))) donne le n° du jour de l'année précédente
Si la différence 1 - 2 est positive :
le jour recherché est donné par la formule 3
=DATE(ANNEE(A1)-1;MOIS(A1);JOUR(A1)) + cette différence
Si la différence est négative :
le jour recherché est donné par la formule 4
=DATE(ANNEE(A1)-1;MOIS(A1);JOUR(A1)) + cette différence + le résultat de la formule 2
A toi de placer ces formules dans différentes cellules ou de les réunir en une seule
A suivre ..; -
Bonjour
essayer cette formule,(pour une date en (C4) .je n'ai pas tout testé mais ce ne doit pas être loin
=DATE(ANNEE(C4)-1;MOIS(C4);JOUR(C4)+JOURSEM(C4)-JOURSEM(DATE(ANNEE(C4)-1;MOIS(C4);JOUR(C4))))
Note: si le jour correspondant "sort du mois cherché", la formule affiche le plus proche au mois suivant.
par exemple: C4=Jeudi 28 février 2°013, le résultat est Jeudi 1° mars 2012
crdlmnt
ne sommes nous pas seuls à comprendre ce que l'on explique? -
Bonjour à tous
Finalement en comparant ma solution avec celle de Vaucluse le problème est plus compliqué qu'il ne parait !
J'arrive à une solution qui semble mieux fonctionner, notamment pour le 04/03/13 (10° Lundi) et le 03/01/16 (1° dimanche) :
=SI(ENT(DATEDIF(DATE(ANNEE(A1);1;1);A1;"d")/7)=ENT(DATEDIF(DATE(ANNEE(A1)-1;1;1);A1-7*52;"d")/7);A1-7*52;A1-7*53)
Il reste un problème insoluble, celui du 53ème jour d'une d'année lorsque l'année précédente n'en comporte que 52, par exemple le jeudi 31/12/2015
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Le demandeur pourrait peut être nous dire ce qui ne convient pas dans cet exemple, ,on y verrais plus clair, je pense: (mais il a un peu disparu?
https://www.cjoint.com/c/CAwk7zpWMDK
A+
ne sommes nous pas seuls à comprendre ce que l'on explique? -
C'est pas 2013 qui pose problème (sauf le 31/12/13 qui est le 53ème mardi alors que 2012 n'en comporte que 52)
Par contre le 05/01/14 qui est le premier dimanche correspond au 06/01/13 (et pas au 30/12/12)-
Exact Patrice, oubli de ma, part,mais là je pense qu'il ne manque que le code de jour semaine qui dit que lundi est le, premier jour de la semaine.
JOURSEM(cell;2) au lieu de JOURSEM(Cell)
soit la formule complète corrigée:
=SI(C15="";"";DATE(ANNEE(C15)-1;MOIS(C15);JOUR(C15)+JOURSEM(C15;2)-JOURSEM(DATE(ANNEE(C15)-1;MOIS(C15);JOUR(C15));2)))
en rajoutant aux bons endroits les ;2 du code JOURSEM
A suivre -
@Vaucluse
C'est encore ça !
Le mardi 01/01/2013 doit correspondre au mardi 03 /01/2012 (et pas au mardi 27/12/2011)
Je ne pense pas que l'utilisation de JOURSEM permette de résoudre le problème, d'où l'utilisation de ENT(no.série/7) qui permet de compter le nombre de lu, ma, ,..;.
Amicalement
Patrice -
Suis têtu... suis peut être pas arrivé,, mais j'irais jusqu'au bout :-))) na!
https://www.cjoint.com/c/CAwoTu5IKtk -
-
-
-
Finalement, pour compléter ma dernière formule et prendre en compte tous les cas (y compris l'absence de correspondance pour certains 53èmes jours) :
=SI(ANNEE(A1)=ANNEE(SI(ENT(DATEDIF(DATE(ANNEE(A1);1;1);A1;"d")/7)=ENT(DATEDIF(DATE(ANNEE(A1)-1;1;1);A1-7*52;"d")/7);A1-7*52;A1-7*53))+1;SI(ENT(DATEDIF(DATE(ANNEE(A1);1;1);A1;"d")/7)=ENT(DATEDIF(DATE(ANNEE(A1)-1;1;1);A1-7*52;"d")/7);A1-7*52;A1-7*53);"Pas de correspondance")
-
Bonjour
pour moi, j'arrête là en attendant que le demandeur veuille bien venir nous dire ce qu'il veut. Je pense que ma proposition donne le jour correspondant au plus près de celui cherché.
Mais on peut faire dire ce que l'on veut lorsque par exemple on tombe sur 5 dimanches en janvier 202 alors qu'il y en a 4 en 2013.
Quel est le premier, quel est le dernier??????
Dans ma, proposition le 1/1/12 se rapporte à fin décembre 2013. Il faudra de toutes façons en caser un sur un autre mois!
crdlmnt -
-
-
-
Bonjour à tous,
J'arrive après la bataille mais je m'étonne que personne n'est proposé une solution simplissime :
=A1-364
Cela donne exactement le même résultat que les formules de Vaucluse, pas de celles de Patrice avec le bon numéro de semaine mais est-ce judicieux d'obtenir :
dimanche 9 décembre 2012 pour le dimanche 15 décembre 2013 ?-
-
Bj tous
Gb a bien raison,bravo tellement c'est tout bête, et Eric aussi mais ajuster les années bissextiles demande certaines précautions
Toutefois, pour la période qui semble raisonnable, on peut penser à
=A1-SI(ET(MOIS(A1-364)<=3;MOD(ANNEE(A1)-1;4)<>0);364;365)
Mais ceci ne sera pas valable depuis 1900 pour toutes les années divisibles par 100 dont le quotient année/100 n'est pas divisible par 4
(exemple 2100 2200 2300 ne sont pas bissextiles alors que 2400 l'est)
Mais d'ici là, le demandeur aura peut être donné signe de vie
crdlmnt -
Bonjour gbinforme,
C'était la toute première réponse de ce fil (A1-7*52 = A1-364) ;-) !!! (#1)
Elle répond exactement à l'exemple fourni, mais pas forcément à la question «une fonction qui me renvoi la journée identique dans l'année précédente» pour laquelle nous avons tous fait des suppositions.
Il faudrait que jalal fournisse plus de précisions sur ce qu'il entend par identique !!!
@Eric : année bissextile ou pas, il y a toujours 7 jours par semaine, donc si on recule de 52 semaines on tombe forcement sur le même jour.
Patrice -
-
@Vaucluse: pas simple les années bissextiles avec Excel !
Par exemple il trouve un mercredi 29 février 1900 qui n'existe pas et donc la veille est un mardi
au lieu d'un mercredi. Heureusement que c'est du passé car de ce fait, avec Excel, tous les noms de jour entre le 0 janvier 1900 et le 28 février 1900 sont faux !!!
Calc : 1 - Excel : 0
-
-
Salut le fil,
Je découvre cette discussion pertinente qui est un déchainement de passion des intervenants, heureusement parce que le demandeur est pris dans la neige.
je viens ajouter un peu d'eau au moulin avec une formule que j'ai testé, mais à l'approbation des experts formulistes que vous êtes nous en sortirons peut être quelque chose
=TEXTE(DATE(ANNEE(A1)-1;MOIS(A1);1);"m/aaa")-MOD(TEXTE(DATE(ANNEE(A1)-1;MOIS(A1);1);"m/aaa")-JOURSEM(A1);7)+7
-
Bonjour à tous,
Et pourquoi ne pas utiliser simplement la fonction DateAdd
DateAdd(interval, number, date)
A voir dans l'aide Excel
Bonne suite-
-
Bonjour,
Et si justement;
Dans la fonction
"Interval" = année, ou trimestre, ou mois, ou semaine, ou jour
"Number" = le nombre d' "interval" choisi
et "date" = la date de base du calcul.
Càd qu'en 3 expression on a la réponse; par exemple
DateAdd("yyyy",1, "27/1/2012") = 27/1/2013 = aujourd'hui
DateAdd("yyyy",2, "27/1/2012") = 27/1/2014 = l'année prochaine
C'est si simple. -
-