Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

mois entre deux dates avec critères


Sujet :

Access

  1. #1
    Nouveau membre du Club
    mois entre deux dates avec critères
    Bonjour,
    Je voudrais trouver le nombre de mois entre deux date mais pour un intervalle défini.
    Par exemple, combien de mois pour l'année 2018 entre 05/06/2015 et 10/10/2019. Mais j'ai besoin d'une formule qui prenne en compte tous les cas de figure :

    1/05/2015 - 1/06/2016 = 0 mois
    1/05/2015 -30/05/2018 = 5 mois
    01/05/2018 - 30/07/2018 = 3 mois
    1/05/2015 -30/10/2019 = 12 mois
    1/10/2018 - 1/04/2019 = 3 mois

    j'ai essayé avec des formules IIF en essayant de prendre les différents cas de figures, avec les critères dans le mode création, avec série date et ajdate et ça fait deux jours que je penche dessus, mais je ne trouve pas du tout

    Quelqu'un pourrait m'aider ?

    Merci beaucoup

    Maxime

  2. #2
    Community Manager

    Salut,

    Ce fil traite votre problématique je pense : https://www.developpez.net/forums/d1...entre-2-dates/


    Bonne lecture
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Nouveau membre du Club
    merci beaucoup

  4. #4
    Membre expert
    Salut
    Et pour info, tous vos cas de figure présentent un résultat faux ! volontaire ?
    Et pour terminer la série de fonctions datedif()

  5. #5
    Rédacteur/Modérateur

    Citation Envoyé par hyperion13 Voir le message
    Salut
    Et pour info, tous vos cas de figure présentent un résultat faux ! volontaire ?
    Et pour terminer la série de fonctions datedif()
    Lequel est faux ?
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    Membre régulier
    mois entre deux dates avec critères
    Bonjour à tous,

    Ci joint une petite base de données avec un exemple de calcul avec une requête.
    On pourrait faire une fonction en VBA pour mettre en paramètre l'année.
    En espérant répondre à ta question.
    Cordialement
    Riton

  7. #7
    Membre expert
    Citation Envoyé par ClaudeLELOUP Voir le message
    Lequel est faux ?
    Bonjour Claude
    Euh... désolé ! erreur de ma part !

  8. #8
    Membre expert
    Un début de solution
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Function NbreMois(datedeb As Date, datefin As Date, inputyear As Integer) As Integer
    Dim nbmois As Integer
     
    If Year(datedeb) < inputyear And Year(datefin) < inputyear Then
        nbmois = 0
    ElseIf Year(datedeb) = inputyear And Year(datefin) = inputyear Then
        nbmois = DateDiff("m", datedeb, datefin) + 1
    ElseIf inputyear > Year(datedeb) And inputyear < Year(datefin) Then
        nbmois = DateDiff("m", DateSerial(inputyear, 1, 1), DateSerial(inputyear, 12, 31)) + 1
    ElseIf inputyear > Year(datedeb) And inputyear = Year(datefin) Then
        nbmois = DateDiff("m", DateSerial(inputyear, 1, 1), datefin) + 1
    ElseIf inputyear = Year(datedeb) And inputyear < Year(datefin) Then
        nbmois = DateDiff("m", datedeb, DateSerial(inputyear, 12, 31)) + 1
    End If
    NbreMois = nbmois
    End Function

  9. #9
    Nouveau membre du Club
    Wow super, merci énormément pour vos réponses, ça m'aide beaucoup !!

  10. #10
    Membre émérite
    Bonjour à tous,

    Dans le même ordre d'idée qu'hyperion13 juste une approche différente, dans un module:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Function fuNbreMois(daDebut As Date, daFin As Date, loAn As Long) As Long
    On Error GoTo gestion_err
     
        Dim i As Long
     
        Do While daDebut < daFin
            If Year(daFin) < loAn Or Year(daDebut) > loAn Then: Exit Do
            If Year(daDebut) = loAn Then: i = i + 1
            daDebut = DateAdd("m", 1, daDebut)
        Loop
     
        fuNbreMois = i
     
    Sortie:
    Exit Function
    gestion_err:
        MsgBox Err.Description & Chr(13) & "Erreur #: " & Err.Number
        Resume Sortie
    End Function


    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  11. #11
    Nouveau membre du Club
    Un tout tout grand merci !!