Macro entre dates sur excel

tinette -  
Loriolette Messages postés 2 Statut Membre -
Bonjour,
Je travaille sur excel 2000.
J'ai une liste de noms ainsi que le début et la fin de leur contrat. J'ai bien fabriqué la macro avec la fonction adéquate, mais le résultat donne (du 01/09/08 au 31/08/09) 11 mois et 30 jours au lieu de 1an. Il faudrait rajouter un jour dans la formule, mais je ne sais pas où. Quelqu'un peut-il m'aider ? Merci de votre attention.
Tinette

2 réponses

bouket Messages postés 147 Statut Membre 22
 
salut,

Pourrais tu donner le code de ta macro, qu'on voit où le rajouter ? On a pas de dons de devins... hum
0
tinette
 
Voici ma fonction qui marche très bien au demeurant, mais pour parfaire la chose, il faudrait rajouter 1 ou 2 selon le cas :
Function entre_dates(debut, fin) As String
If Not IsNull(debut) And Not IsNull(fin) Then
AN = Val(Format(debut, "yyyy"))
MN = Val(Format(debut, "mm"))
JN = Val(Format(debut, "dd"))

AA = Val(Format(fin, "yyyy"))
MA = Val(Format(fin, "mm"))
JA = Val(Format(fin, "dd"))

NJMP = "01/" & MA & "/" & AA
NJMP = DateValue(NJMP) - 1
NJMP = Val(Format(NJMP, "dd"))

If JN > JA Then
JA = JA + NJMP
MA = MA - 1
End If

If MN > MA Then
MA = MA + 12
AA = AA - 1
End If

NA = AA - AN
NM = MA - MN
NJ = JA - JN

If NA = 0 Then
NbAn = ""
ElseIf NA = 1 Then
NbAn = Str$(NA) & " an"
Else
If NM <> 0 Then
If NJ <> 0 Then
NbAn = Str$(NA) & " ans"
Else
NbAn = Str$(NA) & " ans et"
End If
Else
NbAn = Str$(NA) & " ans et"
End If
If NM = 0 And NJ = 0 Then
NbAn = Str$(NA) & " ans"
End If
End If

If NJ = 0 Then
nbj = ""
ElseIf NJ = 1 Then
nbj = Str$(NJ) & " jour"
Else
nbj = Str$(NJ) & " jours"
End If

If NM = 0 Then
NbM = ""
Else
If NJ <> 0 Then
NbM = Str$(NM) & " mois et"
Else
NbM = Str$(NM) & " mois"
End If
End If

entre_dates = NbAn & NbM & nbj
Else
entre_dates = ""
End If
End Function
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

le résultat donne (du 01/09/08 au 31/08/09) 11 mois et 30 jours au lieu de 1an

Tu devrais être assez satisfaite car c'est le résultat que donne DATEDIF qui fait la même fonction.

C'est le fameux problème des intervalles qui revient : un an c'est entre le 1/1/2008 et 1/1/2009 sinon le jour de l'an serait décalé chaque année.
0
Loriolette Messages postés 2 Statut Membre
 
Merci de t'être penché sur ma question. Je me satisferai donc de ce que j'ai, c'est déjà pas mal...
0