Macro entre dates sur excel
tinette
-
Loriolette Messages postés 2 Statut Membre -
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
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:
- Macro entre dates sur excel
- Nombre de jours entre deux dates excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
2 réponses
salut,
Pourrais tu donner le code de ta macro, qu'on voit où le rajouter ? On a pas de dons de devins... hum
Pourrais tu donner le code de ta macro, qu'on voit où le rajouter ? On a pas de dons de devins... hum
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.
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.
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