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
Configuration: Windows XP Internet Explorer 7.0

2 réponses

  1. 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
    1. 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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. 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