Journée comparable dans l'année précédente sur excel

jalal -  
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
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

A voir également:

10 réponses

Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Bonjour,

Si la date est en A1, il suffit de faire :
=A1-7*52
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Si tu cherches aussi le 1er Dimanche :
=SI(NO.SEMAINE(A6)=NO.SEMAINE(MOIS.DECALER(A6;-12));A6-7*52;A6-7*53)
0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
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.
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
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
0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
Salut Patrice.

Je dois préciser que mon message #4 que j'ai fini de rédiger à 02:10 était en cours d'élaboration depuis 01:55 environ, et répondait à ta proposition #1 de 01:06 ;
quand je l'ai validée, ton message #3 de 02:08 n'était pas encore disponible à l'affichage ...

Amicalement.
0
jalal
 
Bonjour Patrice,
merci beaucoup, j'ai essayé ta formule et elle marche à merveille.
amicalement.
Jalal
0
via55 Messages postés 14730 Date d'inscription   Statut Membre Dernière intervention   2 751
 
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 ..;
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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?
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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?
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
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)
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
@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
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
Suis têtu... suis peut être pas arrivé,, mais j'irais jusqu'au bout :-))) na!
https://www.cjoint.com/c/CAwoTu5IKtk
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
C'est pas encore ça !
Dimanche 06/01/13 ==>> Dimanche 01/01/12
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Tu vas t'appliquer vaucluse oui ? ;-)
Rien de pire que les dates pour faire surchauffer les neurones...
eric
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
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")
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Où est passé Jalal ???
0
Raymond PENTIER Messages postés 71870 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
Il a été absorbé par un trou noir de l'espace-temps ...
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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 ?
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Salut gb,

hummm, n'aurais-tu pas oublié les années bissextiles ?
Tu me diras ça ne fait qu'un petit test à ajouter pour ajustement.
eric
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
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
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
@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.
Pas faux ;-)
eric
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
@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
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
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

0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Le dimanche 6 janvier 2013 correspond au dimanche 8 janvier 2012 (au lieu du 01/01/2012)

L'emploi de TEXTE() est bizarre ! On obtient exactement le même résultat en les supprimant :
=DATE(ANNEE(A1)-1;MOIS(A1);1)-MOD(DATE(ANNEE(A1)-1;MOIS(A1);1)-JOURSEM(A1);7)+7
0
tessel75
 
Bonjour à tous,
Et pourquoi ne pas utiliser simplement la fonction DateAdd

DateAdd(interval, number, date)

A voir dans l'aide Excel
Bonne suite
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
parce qu'on ne connais pas number (en jour et c'est pas 1 année) !!!
0
tessel75
 
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.
0
Patrice33740 Messages postés 8931 Date d'inscription   Statut Membre Dernière intervention   1 782
 
Effectivement, c''est si simple, mais ça n'a rien a voir avec la question !!!
«le 01/01/2013 est un mardi, donc je souhaite que excel me renvoi le 1er mardi du mois janvier 2012.»!


PS : D'autre part, la question concerne Excel (pas VBA) et DateAdd n'est une fonction Excel
0