NUMBERS - Fonction pour changer automatiquement une date dépassée en n+1

Taotaopaipai

Membre enregistré
14 Septembre 2014
5
0
Hello tout le monde,

je suis en train de mettre à jour une base de donnée qui référence des centaines d'évènements culturelles. Ces évènements ont lieu pour la plupart aux mêmes jours/mois d'une année sur l'autre.
Je cherche donc une fonction permettant de changer l'année de l'évènement, lorsque cet évènement est passé, à l'année n+1 (certaines des dates n'ayant pas été mises à jours depuis un moment).
Exemple:
Le festival de Berlin a eu lieu du 20/02/2020 au 01/03/2020 et je souhaite que les dates passe automatiquement à 20/02/2021 au 01/03/2021
Un autre évènement a eu lieu le 03/06/2018 et je souhaite que ça passe à 03/06/2020 (car l'évenement n'est pas passé).

j'ai copié les date d'une colonne sur une autre colonne:
A1 B1
03/06/2018 03/06/2018

et créé une fonction que j'applique sur A1 :
=SI(DATE((ANNÉE(B1)<(MAINTENANT)());(ANNÉE(B1)=(MAINTENANT)+1)))

ou encore =SI((DATE((ANNÉE(B1)<MAINTENANT);MOIS(B1);JOUR(B1)))); MAINTENANT+1)

Mais impossible de la faire marcher...

Avez-vous des idées ? Ou peut-être une façon plus simple pour une mise à jour automatique ?

Merci d'avance pour votre aide :)
 
Bonjour,

Il faut donc dans A1, écrire la date de B1 , et si la date est passée écrire la date de B1 avec année + 1.
La formule dans A1 sera:
=SI(B1<MAINTENANT();DATE(ANNÉE(B1)+1;MOIS(B1);JOUR(B1));B1)
 
Bonjour Zeltron,
Merci pour la réponse !
Donc la formule fonctionne mais cela rajoute 1 ans à la date B1 dans tous les cas, c'est à dire que si ma date est 2018, cela va mette 2019. Or j'aimerai que cela indique 2020 (si le mois n'est pas encore passé) ou 2021, si le mois est passé ex:

A1 B1
03/06/2020 03/06/2018
22/02/2021 22/02/2020

J'ai essayé d'adapter votre formule pour que cela prenne en compte ces deux conditions... Mais cela marche pas :(
=SI(B1<DATE(ANNÉE(2020);MOIS(01);JOUR(01));DATE(ANNÉE(MAINTENANT);()+1;MOIS(B1);JOUR(B1));B1);SI(2020<B1<MAINTENANT();DATE(ANNÉE(B1)+1;MOIS(B1);JOUR(B1));B1)
 
Dernière édition par un modérateur:
Ah oui j'avais oublié...
la formule devient :

=SI(B1<MAINTENANT();DATE(ANNÉE(MAINTENANT())+1;MOIS(B1);JOUR(B1));B1)

Dis moi si çà va.

-------------------------------------------------

Alors de nombreux essais il y avait encore un cas ou la formule pouvait afficher une mauvaise date.
Essaie la formule :
celle là devrait aller.

=SI((DATE(ANNÉE(MAINTENANT());MOIS(B$1);JOUR(B$1)))<MAINTENANT();DATE(ANNÉE(MAINTENANT())+1;MOIS(B1);JOUR(B1));B1)
 
Dernière édition par un modérateur:
Ah oui j'avais oublié...
la formule devient :

=SI(B1<MAINTENANT();DATE(ANNÉE(MAINTENANT())+1;MOIS(B1);JOUR(B1));B1)

Dis moi si çà va.

Merci Zeltron, c'est presque ça !

Ca marche pour
A1 B1
03/03/2020 03/03/2018
22/02/2021 22/02/2020
22/05/2020 22/05/2020

Mais par contre quand un événement a eu lieu après le 5 avril 2018 (jour/mois d'aujourd'hui donc, par exemple) ça met directement en 2021, mais j'aimerai que si le jour/mois n'est pas passé, que cela reste en 2020 : 6/06/2018 devienne 06/06/2020 (car l'évènement n'est pas encore passé en juin 2020).

J'ai essayé ça d'après ta formule mais ça marche pas...

=SI(B2<DATE(ANNÉE(MAINTENANT());MOIS(MAINTENANT());JOUR(MAINTENANT()));DATE(ANNÉE(MAINTENANT())+1;MOIS(B2);JOUR(B2));B2))

Tu vois comment ça pourrait marcher ?

Merci pour ton aide !

----------------------------------------

Alors de nombreux essais il y avait encore un cas ou la formule pouvait afficher une mauvaise date.
Essai la formule :
celle là devrait aller.

=SI((DATE(ANNÉE(MAINTENANT());MOIS(B$1);JOUR(B$1)))<MAINTENANT();DATE(ANNÉE(MAINTENANT())+1;MOIS(B1);JOUR(B1));B1)

Alors cela marche super !
Mais bizarrement, lorsque le jour et le mois sont au delà de "maintenant" ; ça bugue (au lieu d'indiquer 2020 dans l'exemple ci dessus parce que le mois n'est pas passé)

1586110869355.png
 
Dernière édition par un modérateur:
OK , j'avais pas tout compris.
alors :

=SI((DATE(ANNÉE(MAINTENANT());MOIS(B$1);JOUR(B$1)))<MAINTENANT();DATE(ANNÉE(MAINTENANT())+1;MOIS(B1);JOUR(B1));(DATE(ANNÉE(MAINTENANT());MOIS(B$1);JOUR(B$1))))
 
C'est top !
Merci Énormément pour ton aide Zeltron ! Je ne pense pas que j'y serai arrivé tout seul.
Ça va m'éviter de modifier des centaines de lignes à la main !

Une question, pourquoi utilises tu parfois B$1 (en rang absolu) et non B1 dans ta fonction?
 
Dernière édition par un modérateur:
B1 ou B$1 pour ton cas c’est pareil, s’il sont différents dans ma formule c’est parce que je la saisie dés fois à la main, dès fois en cliquant sur la cellule.

Bref’ ça fonctionne, content pour toi !