Formule pour des échéances à la décade

Résolu
JLES2012 Messages postés 4 Statut Membre -  
JLES2012 Messages postés 4 Statut Membre -
Bonjour,

Pour calculer des échéances de factures à 30 jours fin de décade j'utilise la formule suivante :
=DATE(ANNEE(A1);MOIS(A1)+1+(JOUR(A1)>31);MAX(10;PLAFOND(MOD(JOUR(A1);31);10)))

Le résultat me convient sauf lorsque :
1 - le mois de facturation est de 31 jours
ex fact du 31/01/2012 éch 10/02/2012 ???
2 - le mois d'échéance est de 31 jours
ex fact du 22/02/2012 éch 30/03/2012 (je souhaiterais que ce soit le 31/03/2012) !

Quelqu'un a-t-il LA solution...
D'AVANCE MERCI A TOUS POUR VOTRE INVESTISSEMENT.
A voir également:

9 réponses

eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour,

si tu expliquais ce que sont des des échéances de factures à 30 jours fin de décade ?

ex fact du 22/02/2012 éch 30/03/2012 (je souhaiterais que ce soit le 31/03/2012) !
Pour moi une décade serait tous les 10 jours. Pourquoi 11 ici ? C'est plutôt une fin de mois.

ex fact du 31/01/2012 éch 10/02/2012 ???
La bonne réponse serait ?
Le mieux serait de fournir en plus plusieurs exemple de résultats attendus et la totalité des règles.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
2
JLES2012 Messages postés 4 Statut Membre 1
 
Cette formule est parfaite tout au long de l'année.

SAUF :
- pour toutes les factures datées entre le 21 janvier 2013 et le 31 janvier 2013 où j'ai une date d'échéance au 29 février 2013... alors que cette année il n'y a que 28 jours...
1
tessel75
 
Bonsoir, si tu avais testé l'autre, tu n'aurais pas eu de problème.
Cordialement
0
tessel75
 
Bonjour,
Je n'ai pas compris grand chose à ton histoire de "décade", mais je peux te proposer cette formule qui marche sur le VBA

Function DerJourMois(d) As Date
On Error GoTo Sortie
DerJourMois = DateAdd("m", 1, d) - Day(d)
Sortie:
End Function


"d" est normalement la date en cours, tu peux la remplacer par la date de fin de décade de ton calcul, et elle (la formule) te sortira le dernier jour du mois correspondant.
Soit X = DerJourMois(DateFinDecade)

D'autres plus compétents pourront sans doute nous expliquer pourquoi la formule ainsi rédigée fonctionne en VBA et non pas directement sur le tableau Excel. Pour moi ça reste un mystère.
Bonne suite
0
JLES2012 Messages postés 4 Statut Membre 1
 
Explications :
30 jours fin de décade (conditions en pratique chez les maraichers)

1 - toutes les factures datées entre le 01 et le 10 auront une échéance au 10 du mois suivant
ex : facture du 02/01/2013 éch 10 fév 2013

2 - toutes les factures datées entre le 11 et le 20 auront une échéance au 20 du mois suivant
ex : facture du 12/01/2013 éch 20 fév 2013

3 - toutes les factures datées entre le 21 et le 31 (ou 30 si le mois est de 30 jours, 28ou29 pour février) auront une échéance au 31 du mois suivant (ou 30 si le mois est de 30 jours, 28ou29 pour février)
ex : facture du 22/01/2013 éch 28 fév 2013

Comme il y aura des factures datées du 31 (pour les mois où il y a 31 jours... il ne faut surtout pas les "oublier" si non ce sera un manque à gagner au niveau de la trésorerie !
0

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

Posez votre question
tontong Messages postés 2584 Statut Membre 1 062
 
Bonjour,
La formule suivante est peut-être simplifiable mais en tous cas à vérifier,
un cas particulier a pu m'échapper:
=SI(JOUR(A1)>20;FIN.MOIS(A1;1);SI(JOUR(A1)>10;MOIS.DECALER(DATE(ANNEE(A1);MOIS(A1);20);1);MOIS.DECALER(DATE(ANNEE(A1);MOIS(A1);10);1)))
0
tontong Messages postés 2584 Statut Membre 1 062
 
Je n'ai pas cette erreur.
Essayez d'appliquer =FIN.MOIS(A1;1) pour le 22/01/2013!!!
0
michel_m Messages postés 18903 Statut Contributeur
 
Bonjour
=SI(JOUR(A1)>20;FIN.MOIS(A1;1);MOIS.DECALER(A1;1)-JOUR(A1)+SI(JOUR(A1)>10;20;10))

bonjour Tontong: m^me idée mais chuis à la bourre
Michel
0
tontong Messages postés 2584 Statut Membre 1 062
 
C'est un peu plus élaboré mais plus court donc c'est mieux.
0
JLES2012 Messages postés 4 Statut Membre 1
 
BRAVO !

L'OBJECTIF EST ATTEINT.

MERCI A TOUS POUR VOS CONTRIBUTIONS

(et ce ne sont pas des salades... parole de maraîcher)
0
tessel75
 
Bonsoir,
Merci pour tes explications.

Alors la formule que je peux te proposer sera la suivante, à utiliser directement du coup:

Function Derjourdecade(d) As Date
On Error GoTo Sortie
If Day(d) < 11 Then
Derjourdecade = DateAdd("m", 1, d) - Day(d) + 10
ElseIf Day(d) < 21 Then
Derjourdecade = DateAdd("m", 1, d) - Day(d) + 20
ElseIf Day(d) > 20 Then
Derjourdecade = DateAdd("m", 2, d) - Day(d)
End If
Sortie:
End Function


Où "d" sera la date de facturation
Bonne suite
-1