une fonction qui renvoie parfois une date erronée

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai rédigé une petite fonction me permettant de récupérer la même date (jour et mois) des années après une date donnée, mais sous certaines conditions.
Il y a 2 dates "stratégiques" : le premier janvier et le dernier jour du mois de février.
La fonction s'appelle : DateSortie ---> DateSortie(madate As Date, nbyears As Byte)
Exemples :
DateSortie(15 mars 2004, 6) <=> 6 ans après le 15 mars 2004 --> 15 mars 2010
Dates "stratégiques" :
1/ 1er janvier : DateSortie(1er janvier 2004, 6) <=> 6 ans après le 1 janvier 2004 --> 31 décembre 2009
2/ dernier jour du mois de février :
a) c'est un 28 : DateSortie(28 février 2004, 6) <=> 6 ans après le 28 février 2004 --> 28 février 2010
b) c'est un 29 : DateSortie(29 février 2004, 6) <=> 6 ans après le 29 février 2004 --> 28 février 2010 (2004 est une année bissextile et pas 2010)
c'est toujours un 29 : DateSortie(29 février 2004, 8) <=> 8 ans après le 29 février 2004 --> 29 février 2012 (2012 est encore une année bissextile)

La fonction :
VB:
Function DateSortie2(madate As Date, nbyears As Byte) As Date
'Renvoie la date correspondant à une date donnée + un nombre d'années donné.
'Si la date de départ commence un 1er janvier, la date résultante s'achèvera le 31/12 de l'année [a + duration - 1]
'Magic_Doctor
    Dim j As Byte, m As Byte, a As Integer, x As Byte
    j = Day(madate): m = Month(madate): a = Year(madate)
    If j = 1 And m = 1 Then 'la 1ère annuité sera complète (non proratisée)
        j = 31: m = 12: x = 1 '31 décembre
    ElseIf j = 29 And m = 2 Then 'dernier jour de février d'une année bissextile
        j = IIf(IsBissextile(madate) = True, 29, 28)
    End If
    DateSortie2 = CDate(j & "/" & m & "/" & a + nbyears - x)
End Function
Pour gérer les années bissextiles j'ai rédigé ceci :
VB:
Function IsBissextile(fecha As Date) As Boolean
'Vérifie si, dans une date, l'années est bissextile ou pas (tient compte des années théoriquement bissextiles et qui ne le sont en fait pas, ex. 1900 / 2100...)
    If Year(fecha) Mod 4 = 0 And Year(fecha) Mod 100 = 0 And Year(fecha) Mod 400 = 0 Then
        IsBissextile = True
    ElseIf Year(fecha) Mod 4 = 0 And Year(fecha) Mod 100 = 0 And Year(fecha) Mod 400 <> 0 Then
        IsBissextile = False
    ElseIf Year(fecha) Mod 4 = 0 Then
        IsBissextile = True
    End If
End Function
Et bien, contre toute attente, ça plante mais uniquement quand on choisit un 29 février et que le le nombre d'années rajoutées ne soit pas un multiple de 4, autrement dit quand on ne tombe pas sur une année bissextile.

Si parmi vous quelqu'un pouvait m'aider à solutionner ce problème.
Merci d'avance.
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bonjour,

J'ai fini par résoudre le problème, poussivement mais sûrement, même si, je n'en doute pas, il y a une solution plus simple :
VB:
Function DateSortie(MaDate As Date, NbAnnées%, MoisClôture%) As Date
'Magic_Doctor / ROGER2327
Dim a As Integer, m As Byte, j As Byte
a = Year(MaDate): m = Month(MaDate): j = Day(MaDate)

If j = 1 And m = MultipleMois(MoisClôture + 1, 12) Then 'si le jour de "MaDate" est un 1er et que son mois soit "MoisClôture + 1"
    DateSortie = DateSerial(a + NbAnnées - 1, MoisClôture, NbJoursDuMois(CByte(MoisClôture), a))
Else
    DateSortie = DateSerial(a + NbAnnées, m, j) + (Not LeapYear(a + NbAnnées)) * (m = 2) * (j = 29)
End If
End Function
---------------------------------------------------------------------------
Function MultipleMois(m As Integer, seuil As Byte) As Byte
'- m : variable
'- seuil : valeur seuil qui ne peut être dépassée par m
'Exemple : si seuil = 24, si m = 1 --> 1 / si m = 25 --> 1
'Dans ce cas, quel que soit m, le résultat sera toujours compris dans l'intervalle d'entiers [1 , 24]
'Si seuil = 12, l'intervalle d'entiers sera : [1 , 12]
'Magic_Doctor
    m = m - seuil * (m \ seuil)
    MultipleMois = IIf(m = 0, seuil, m)
End Function
---------------------------------------------------------------------------
Function LeapYear(a%) As Boolean
'Vérifie si une année est bissextile ou pas (tient compte des années théoriquement bissextiles et qui ne le sont en fait pas, comme 1800/1900/2100...)
'- a : une année quelconque
'ROGER2327
    LeapYear = ((a Mod 4) = 0) * (1 + ((a Mod 100) = 0) * (1 + (((a \ 100) Mod 4) = 0)))
End Function
---------------------------------------------------------------------------
Function NbJoursDuMois(m As Byte, Optional année As Integer = 0) As Byte
'Renvoie le nombre de jours d'un mois en fonction de son Nº
'- m : un Nº de mois (janvier --> 1 ... décembre --> 12)
'- année : si omis, ne tiendra pas compte des années bissextiles (février -2- aura toujours 28 jours)
'Magic_Doctor
    Dim mesmois As Variant, x As Byte, nbjoursmois As Byte
    
    x = IIf(année = 0, 28, IIf(LeapYear(année), 29, 28))
    mesmois = Array(31, x, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    
    NbJoursDuMois = mesmois(m - 1)
End Function
 

Dranreb

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Ah, effectivement c'est plus simple si le dernier paramètre est tous simplement le mois de clôture désiré:
VB:
Function DateSortie(ByVal MaDate As Date, ByVal NbAnnées As Long, ByVal MoisClôture As Long) As Date
DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture, Day(MaDate) - 1)
Do While Month(DateSortie) <> MoisClôture: DateSortie = DateSortie - 1: Loop
End Function
Ce qui trompait c'est que vous aviez spécifié des mois différents dans les exemples de dates d'entrées alors que la date de sortie n'en dépend finalement pas.

P.S. Non attendez, il y a une erreur: la boucle parcours parfois toute une année. C'est plutôt:
VB:
Function DateSortie(ByVal MaDate As Date, ByVal NbAnnées As Long, ByVal MoisClôture As Long) As Date
DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture - (Day(MaDate) = 1), Day(MaDate) - 1)
Do While Month(DateSortie) <> MoisClôture: DateSortie = DateSortie - 1: Loop
End Function
bien que ça explique pas vos 2003 en partant de 2000 alors que vous demandez + 4 ans.
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bonjour Dranreb,

Je viens d'essayer votre solution, effectivement nettement plus courte.
Je compare mes résultats avec les vôtres. Soient "DateSortie1" ma fonction, "DateSortie2" votre fonction :
DateSortie1(02/06/2000;4;5) --> 02/06/2004 'OK
DateSortie2(02/06/2000;4;5) --> 01/05/2004
------------------------------------------------
DateSortie1(01/06/2000;4;5) --> 31/05/2004 'OK
DateSortie2(01/06/2000;4;5) --> 31/05/2004 'OK
------------------------------------------------
DateSortie1(29/02/2000;4;5) --> 29/02/2004 'OK
DateSortie2(29/05/2000;4;5) --> 28/05/2004
------------------------------------------------
DateSortie1(29/02/2000;5;5) --> 28/02/2004 'OK
DateSortie2(29/02/2000;5;5) --> 28/05/2004
------------------------------------------------
DateSortie1(28/02/2000;4;5) --> 28/02/2004 'OK
DateSortie2(01/06/2000;4;5) --> 27/05/2004
------------------------------------------------
DateSortie1(28/02/2000;5;5) --> 28/02/2005 'OK
DateSortie2(01/06/2000;5;5) --> 27/05/2005
 

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Re, nos posts se sont croisés alors que vous faisiez une modification.
Je reprends exactement le même raisonnement que précédemment :
DateSortie1(02/06/2000;4;5) --> 02/06/2004 'OK
DateSortie2(02/06/2000;4;5) --> 01/05/2004
------------------------------------------------
DateSortie1(01/06/2000;4;5) --> 31/05/2004 'OK
DateSortie2(01/06/2000;4;5) --> 30/05/2004
------------------------------------------------
DateSortie1(29/02/2000;4;5) --> 29/02/2004 'OK
DateSortie2(29/05/2000;4;5) --> 28/05/2004
------------------------------------------------
DateSortie1(29/02/2000;5;5) --> 28/02/2004 'OK
DateSortie2(29/02/2000;5;5) --> 28/05/2004
------------------------------------------------
DateSortie1(28/02/2000;4;5) --> 28/02/2004 'OK
DateSortie2(01/06/2000;4;5) --> 27/05/2004
------------------------------------------------
DateSortie1(28/02/2000;5;5) --> 28/02/2005 'OK
DateSortie2(01/06/2000;5;5) --> 27/05/2005
 

ROGER2327

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Suite (invisible ?)


Une autre :​
VB:
Function DateSortie0(MaDate As Date, NbAnnées%, DecMois%) As Date
    DateSortie0 = DateSerial(Year(MaDate) + NbAnnées, Month(MaDate), Day(MaDate)) _
        + (Month(MaDate) <> Month(DateSerial(Year(MaDate) + NbAnnées, Month(MaDate), Day(MaDate)))) _
        + Year(DateSerial(Year(MaDate), Month(MaDate) - DecMois, Day(MaDate)) - 1) _
        - Year(DateSerial(Year(MaDate), Month(MaDate) - DecMois, Day(MaDate)))
End Function


ℝOGER2327
#6946


Dimanche 1[SUP]er[/SUP] As 141 (Nativité de Pantagruel - fête Suprême Tierce)
13 Brumaire An CCXXII, 7,5288h - topinambour
2013-W44-7T18:04:09Z
 

Pièces jointes

  • Classeur1.xlsm
    17.8 KB · Affichages: 48
  • Classeur1.xlsm
    17.8 KB · Affichages: 47
  • Classeur1.xlsm
    17.8 KB · Affichages: 56

Dranreb

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

N'est il pas logique que si ça couvre un mois entier dans le cas où ça commence un 1er, il en soit de même dans la mesure du possible si ça commence un autre jour ?
Il me semble que si ça commence un jour plus tard soit un 2 ça doit aussi finir un jour plus tard, donc un 1er, non ?
Enfin adaptez le comme il vous le faut, l'essentiel c'est de ne pas se compliquer avec d’inutiles calculs avec les années bissextiles, puisqu’il suffit de reculer tout à la fin d'un jour jusqu'à ce qu'on soit dans le mois qu'il faut. (ou plus exactement tant qu'on n'y est pas)

P.S. Une proposition avec des commentaires:
VB:
Function DateSortie(ByVal MaDate As Date, ByVal NbAnnées As Long, ByVal MoisClôture As Long) As Date
If Day(MaDate) = 1 Then
   DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture + 1, 0)
'     DateSerial corrige le jour 0 en le dernier jour du mois qui précède le mois spécifié,
'     qui est celui qui suit MoisClôture, donc en fin de compte de MoisClôture.
Else
   DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture, Day(MaDate)) 'Day(MaDate) - 1) ?
'     Ajout nombre d'années, MoisClôture demandé, même jour. (jour précédent plus logique ?)
   End If
'     DateSerial peut avoir été amené à rectifier ça en une des 1ères dates de MoisClôture + 1. Donc:
Do While Month(DateSortie) <> MoisClôture: DateSortie = DateSortie - 1: Loop
End Function
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bonsoir Dranreb,

Je vous réponds avant d'essayer la solution de ROGER.

Vous vous doutez bien que cette fonction sera utilisée dans une autre application.
Ma fille me demande de lui dresser un tableau pour un plan d'amortissement LINÉAIRE. Il y a seulement quelques jours je ne savais même pas de quoi il s'agissait. Je fouine dans le web et découvre un monde cauchemardesque, régi par des règles dénuées de toute poésie : celui de la comptabilité. Une chose est certaine, si demain je me réveillais comptable, la première chose que je ferais serait de me pendre ! Mais... si je me réveillais expert-comptable, peut-être choisirais-je alors de me poignarder en plein cœur avec une saucisse de Strasbourg... Nonobstant, d'un point de vue strictement cortical, tenter de résoudre certains problèmes existentiels comptables (si tant est qu'on en saisisse la "sémantico-logique"...) peut être "amusant". Mais la logique comptable sous le carcan administratif sombre vite dans des abysses kafkaïennes...
Pour revenir à nos moutons, j'ai compris, entre autres choses, que l'année dite fiscale ne s'étendait pas forcément du 1er janvier au 31 décembre, mais à partir de n'importe quel mois jusqu'au mois choisi (inclu) + 12. Pour une année comptable allant du 01/01/N au 31/12/N, si la date de mise en service de l'actif est le 01/01/2000 et que la durée d'utilisation de celui-ci est de 5 ans, j'amortirai du 01/01/2000 jusqu'au 31/12/2004. En revanche, si la date de mise en service de l'actif est le 15/06/2000, toujours pour 5 années d'utilisation, l'amortissement s'achèvera le 15/06/2005.
Maintenant supposons que l'année fiscale aille du 01/10/N au 30/09/N + 1. En reprenant strictement le même raisonnement que précédemment (avec 5 années d'utilisation de l'actif) :
- date de mise en service : 01/10/2000
- date de sortie : 30/09/2004

- date de mise en service : 12/11/2000
- date de sortie : 12/11/2005

En fait, la fonction sert uniquement à connaître la date de sortie de l'immobilisation, suivant la date de mise en service de celle-ci. Si cette dernière commence le 1er jour de l'année fiscale décidée par l'utilisateur, les choses se compliquant un peu.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bon soit, les lois comptable étant ce qu'elles sont, et la date de sortie ne pouvant donc jamais être un 1er de mois, ma dernière propositions devrait convenir, je pense. Sauf que la boucle finale n'a pas besoin d'être incluse au premier cas. Ça donne donc :
VB:
Function DateSortie(ByVal MaDate As Date, ByVal NbAnnées As Long, ByVal MoisClôture As Long) As Date
If Day(MaDate) = 1 Then
   DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture + 1, 0)
'     DateSerial corrige le jour 0 en le dernier jour du mois qui précède le mois spécifié,
'     qui est celiui qui suit MoisClôture, donc en fin de compte de MoisClôture.
Else
   DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture, Day(MaDate))
'     Ajout nombre d'années, MoisClôture demandé, même jour.
'     DateSerial peut l'avoir rectifié en une des 1ères dates de MoisClôture + 1. Donc:
   Do While Month(DateSortie) <> MoisClôture: DateSortie = DateSortie - 1: Loop
   End If
End Function
 

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bonsoir ROGER,

1/ j'étais content d'avoir résolu ce problème
2/ je vois votre solution et me dis : "le chemin est encore long..."

Des 2 fonctions que vous me proposez, j'ai retenu la 1ère qui ne nécessite pas "LeapYear" :
VB:
Function DateSortie(MaDate As Date, NbAnnées%, MoisClôture%) As Date
    DateSortie02 = DateSerial(Year(MaDate) + NbAnnées, Month(MaDate), Day(MaDate)) _
        + (Month(MaDate) <> Month(DateSerial(Year(MaDate) + NbAnnées, Month(MaDate), Day(MaDate)))) _
        + Year(DateSerial(Year(MaDate), Month(MaDate) - MoisClôture, Day(MaDate)) - 1) _
        - Year(DateSerial(Year(MaDate), Month(MaDate) - MoisClôture, Day(MaDate)))
End Function
J'ai renommé le dernier paramètre par "MoisClôture".
Subsiste un seul problème. Si je choisis, par exemple : "=DateSortie(01/12/2000;5;11)"
le résultat que j'attends devrait être : 30/11/2004
Votre fonction me renvoie : 30/11/2005
Comment régler le problème ?
 

ROGER2327

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Re...


VB:
Function DateSortie0(MaDate As Date, NbAnnées%, MoisClôture%) As Date
Dim d As Date
    d = DateSerial(Year(MaDate), Month(MaDate) - MoisClôture, Day(MaDate))
    DateSortie0 = DateSerial(Year(MaDate) + NbAnnées + Year(d - 1) - Year(d), Month(MaDate), Day(MaDate)) _
        + (Month(MaDate) <> Month(DateSerial(Year(MaDate) + NbAnnées, Month(MaDate), Day(MaDate)))) _
        + Year(d - 1) - Year(d)
End Function
peut-être ?


Amusant :
Code:
=DateSortie0("1/12/2000";1;11)
renvoie 30/11/2000.



ℝOGER2327
#6947


Dimanche 1[SUP]er[/SUP] As 141 (Nativité de Pantagruel - fête Suprême Tierce)
13 Brumaire An CCXXII, 9,4259h - topinambour
2013-W44-7T22:37:20Z
 

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bonsoir ROGER,

Je compare attentivement nos 2 solutions.
Soit "DateSortie1" ma fonction, "DateSortie2" la vôtre.
Exemple1 :
- DateSortie1(01/01/2000;1;12) --> 31/12/2000 'OK
- DateSortie2(01/01/2000;1;12) --> 31/12/1999 '????

Exemple2 :
- DateSortie1(01/12/2000;1;11) --> 30/11/2000 '???? [attendu : 30/11/2001]
- DateSortie2(01/12/2000;1;11) --> 30/11/2000 '???? [attendu : 30/11/2001]

Exemple3 :
- DateSortie1(02/12/2000;1;11) --> 02/12/2001 'OK
- DateSortie2(02/12/2000;1;11) --> 02/12/2001 'OK

Raisonnons. "Exemple2" déconne dans les 2 fonctions.
- le jour de la date de mise en service = 1
- le mois de la date de mise en service = 12
- MoisClôture = 11, soit mois de la date de mise en service - 1.

Prenons un autre exemple sous les mêmes conditions, à savoir :
- jour de la date de mise en service = 1
- mois de la date de mise en service = x
- MoisClôture = x - 1

VERDICT :
- DateSortie1(01/x/2000;1;x - 1)
- DateSortie2(01/x/2000;1;x - 1)

- DateSortie1(01/06/2000;1;5) --> 31/05/2000 '???? [attendu : 31/05/2001]
- DateSortie2(01/06/2000;1;5) --> 31/05/2000 '???? [attendu : 31/05/2001]

Ça foire donc uniquement pour le 1er jour de l'année fiscale, sauf si celle-ci débute un 1er janvier (pour "DateSortie1").
Cela ne m'étonne pas, une année fiscale ne peut que mal commencer !

C'est vrai que c'est bizarre cette histoire !
Mais, nous avons des indices...
 

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Bon, je viens de modifier ma fonction. Ça a l'air de marcher :
VB:
Function DateSortie(MaDate As Date, NbAnnées%, MoisClôture%) As Date
'Magic_Doctor / ROGER2327
Dim a As Integer, m As Byte, j As Byte, x As Byte
a = Year(MaDate): m = Month(MaDate): j = Day(MaDate)

If MoisClôture = 12 Then x = 1

If j = 1 And m = MultipleMois(MoisClôture + 1, 12) Then 'si le jour de "MaDate" est un 1er et que son mois soit "MoisClôture + 1"
    DateSortie = DateSerial(a + NbAnnées - x, MoisClôture, NbJoursDuMois(CByte(MoisClôture), a))
Else
    DateSortie = DateSerial(a + NbAnnées, m, j) + (Not LeapYear(a + NbAnnées)) * (m = 2) * (j = 29)
End If
End Function
--------------------------------------------------------------------------------------
Function MultipleMois(m As Integer, seuil As Byte) As Byte
'- m : variable
'- seuil : valeur seuil qui ne peut être dépassée par m
'Exemple : si seuil = 24, si m = 1 --> 1 / si m = 25 --> 1
'Dans ce cas, quel que soit m, le résultat sera toujours compris dans l'intervalle d'entiers [1 , 24]
'Si seuil = 12, l'intervalle d'entiers sera : [1 , 12]
'Magic_Doctor
    m = m - seuil * (m \ seuil)
    MultipleMois = IIf(m = 0, seuil, m)
End Function
--------------------------------------------------------------------------------------
Function LeapYear(a%) As Boolean
'Vérifie si une année est bissextile ou pas (tient compte des années théoriquement bissextiles et qui ne le sont en fait pas, comme 1800/1900/2100...)
'- a : une année quelconque
'ROGER2327
    LeapYear = ((a Mod 4) = 0) * (1 + ((a Mod 100) = 0) * (1 + (((a \ 100) Mod 4) = 0)))
End Function
--------------------------------------------------------------------------------------
Function NbJoursDuMois(m As Byte, Optional année As Integer = 0) As Byte
'Renvoie le nombre de jours d'un mois en fonction de son Nº
'- m : un Nº de mois (janvier --> 1 ... décembre --> 12)
'- année : si omis, ne tiendra pas compte des années bissextiles (février -2- aura toujours 28 jours)
'Magic_Doctor
    Dim mesmois As Variant, x As Byte, nbjoursmois As Byte
    
    x = IIf(année = 0, 28, IIf(LeapYear(année), 29, 28))
    mesmois = Array(31, x, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    
    NbJoursDuMois = mesmois(m - 1)
End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Pourquoi en revenez vous toujours à vos conneries malgré toutes les solutions qu'on vous apporte ?
Une bonne fois pour toute le dernier jour d'un Mois, Année c'est DateSerial(Année, Mois + 1, 0) !
Vous avez plaisir à mettre plus de code que nécessaire ou quoi ?
'si le jour de "MaDate" est un 1er et que son mois soit "MoisClôture + 1 alors mettre la fin de mois de clôture, ça s'écrit :
VB:
If Day(MaDate) = 1 And Month(MaDate) = MoisClôture Mod 12 + 1 Then
   DateSortie = DateSerial(Year(MaDate) + NbAnnées, MoisClôture + 1, 0)
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

Suite (et, pour moi, fin)...



ℝOGER2327
#6949


Lundi 2 As 141 (Sainte RroSainte Sélavy, héroine - fête Suprême Quarte)
14 Brumaire An CCXXII, 4,7606h - endive
2013-W45-1T11:25:32Z
 

Pièces jointes

  • XLD_212480.xlsx
    13.1 KB · Affichages: 29

Magic_Doctor

XLDnaute Barbatruc
Re : une fonction qui renvoie parfois une date erronée

¡Caramba!

Roger, vous avez tout à fait raison, un fil c'est comme une grève, il faut savoir l'arrêter.
Quoi qu'il en soit, ma fonction, certes un tantinet lourde, résoud, jusqu'à preuve du contraire, le problème. Mais tout contraire sera le bienvenu.

M. Dranreb, j'ai bien essayé votre fonction du post #23, mais elle me renvoie des résultats pour le moins inattendus.
Exemples :
12/08/2009 : (nb d'années : 5 ans / mois clôture : 12)
ma fonction : 12/08/2014
votre fonction : 12/12/2014

01/01/2009 : (nb d'années : 5 ans / mois clôture : 12)
ma fonction : 31/12/2013
votre fonction : 31/12/2014

Il n'y a pas de question bête, seules les réponses peuvent l'être...
 

Discussions similaires

Réponses
2
Affichages
654

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo