Macro entre dates sur excel

Fermé
tinette - 19 août 2009 à 15:33
Loriolette Messages postés 2 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 20 août 2009 - 20 août 2009 à 07:49
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
A voir également:

2 réponses

bouket Messages postés 143 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 16 octobre 2011 22
19 août 2009 à 16:51
salut,

Pourrais tu donner le code de ta macro, qu'on voit où le rajouter ? On a pas de dons de devins... hum
0
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 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
19 août 2009 à 21:48
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 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 20 août 2009
20 août 2009 à 07:49
Merci de t'être penché sur ma question. Je me satisferai donc de ce que j'ai, c'est déjà pas mal...
0