Créer le même algorithme que EDATE

Fermé
kassia77 - 6 mai 2011 à 10:37
 Kassia77 - 9 mai 2011 à 12:57
Bonjour,

J'utilise actuellement dans une de mes feuilles de calcul Excel la fonction EDATE (ou MOIS.DECALER en français), pour calculer à partir d'une date, une nouvelle date incrémenté de 18 mois moins 1 jour. La formule edate ayant parfois des bugs je voudrais refaire la formule à l'aide de la fonction date ou autre. J'ai donc fais ceci :

=EDATE(E5;18)-1 est remplacé par =DATE(ANNEE(E5);MOIS(E5)+18;JOUR(E5)-1)

Le problème c'est que je n'obtiens pas le même résultat avec les deux formules. Je pense que la seconde formule ajoute au mois le nombre de jours contenu dans le mois courant de la date E5. Je m'explique si avec une date du 31 janvier 2010, je fais le calcul pour un mois, la première formule me donne le 28 février 2010 tandis que la seconde me donne le 03 mars 2010 (ie elle a ajouté 31 jours, nombre de jours dans le mois de janvier, et non 28)

Quelqu'un aurait-il une solution?

Merci d'avance à ceux qui pourront me répondre.

A voir également:

4 réponses

mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 354
6 mai 2011 à 17:08
Dans votre deuxième formule, la fonction mois(E5)+1 considère en fait le nombre de jours dans le mois de E5. Ce qui veut dire que si votre mois est février, le calcul se fera sur une base de 28 jours. Il sera sur 31 jours pour janvier et 30 sur avril, etc... Cette formule rajoute le nombre de jours en excès ce qui fait basculer la date au deuxième mois.
Alors que la fonction mois.decaler ne considère que le mois.

En partant de ce constat :
=mois.decaler(31/01/2011) donnera 28/02/2011
Elle donnera cette date du 28/01/2011 au 31/01/2011
alors que :
=date(annee(31/01/2011);mois(31/01/2011)+1;jours(31/02/2011)) donnera 03/03/2011 qui correspond à 01/01/2011 + 31 jours

Avec cette formule : 29/01/2011 et le 01/02/2011 donneront toutes les deux le 01/03/2011, alors que le 30/01/2011 donnera le 02/03/2011.

En fait, tant que la date correspondante à la formule ne correspond pas pile poil a une date précise, la valeur est incrémentée du nombre de jours en excès.
Il faudrait alors introduire dans votre formule des fonctions conditionnelles, ce qui l'alourdirait nettement.
Mais peut-être y a t'il une solution qui m'échappe pour le moment.

Conclusion : la seule formule effectuant véritablement un décalage de mois est mois.decaler.
Or, vous parlez de bug sur cette formule. Pouvez-vous être plus précis ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
6 mai 2011 à 19:07
Bonjour tout le monde,

Je suis comme mic13710 : très curieux que tu développes sur ce bug...
Sinon une formule équivalente à mois.decaler() :
=MIN(DATE(ANNEE(A1);MOIS(A1)+1;JOUR(A1));DATE(ANNEE(A1);MOIS(A1)+2;1)-1)

C'est pour mois+1, changer les 2 valeurs en gras pour d'autres différences de mois.
Possible que ça crée la même erreur que mois.decaler(), mais tant qu'on ne connait pas ce bug impossible de contrôler....

eric
0
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 354
6 mai 2011 à 20:25
@Eric,
Effectivement, la fonction min() était la solution.

@kassia;
Vous parlez de 31 janvier et 28 février dans votre demande, ce qui m'amène à penser que vous souhaitez avoir un affichage de la date de fin de mois. C'est impossible avec les fonctions utilisées.
Il aurait fallu pour cela utiliser FIN.MOIS() qui vous permet d'afficher le dernier jour du mois d'une date que vous pouvez décaler du nombre de mois que vous souhaitez, en positif ou négatif.
Merci de nous éclairer sur votre besoin et/ou sur le "bug" de MOIS.DECALER() qui me semble surprenant.
0
Bonjour à tous,

Merci pour vos réponses, Eric ta solution fonctionne à merveille, je n'avais effectivement pas penser à utiliser min.
En fait le fichier excel sert à l'établissement d'un business plan et il a été développé avec la version d'excel en anglais. Or certaines personnes travaillent avec la versions d'excel en français du coup lorsqu'ils ouvrent le BP le calcul avec edate bug un peu et il faut qu'ils aillent manuellement taper "entrée" dans chaque case utilisant cette formule pour que cela marche.
On m'a donc demandé de chercher une solution pour plus de confort, mais la fonction edate ne buggait pas vraiment en elle même!

Encore merci à tous d'avoir si rapidement répondu à mon post!!
0