Calcul entre deux dates sur Excel

Patoche3344 -  
danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour

Je voudrais calculer la date qui me reste entre le moment ou j'ai un cours de musique et sa date de validité, généralement un an

Dans mon ex la date d'achat est le 08 01 2025 en cellule D4 et sa date de validité en cellule G4

Merci pour le renseignement

Je vous souhaite à tous une très belle année 2025 et vous présente mes meilleurs Voeux

Cordialement

8 réponses

  1. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297
     

    Bonjour,

    Pour avoir le nombre de jours entre les deux dates :

    =G4-D4

    Pour avoir l'intervalle en années / mois / Jours :

    =DATEDIF(D4;G4;"y")&" an(s), "&DATEDIF(D4;G4;"ym")&" mois, "&DATEDIF(D4;G4;"md")&" jour(s)"

    Daniel


    1
  2. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515
     

    Bonjour à tous,

    Que faut-il comprendre dans l'énoncé de la question ?

    Je comprends deux choses :

    1/ l'affichage de la date de validité en fonction d'un délai prévu ?

    Dans ce cas la fonction MOIS.DECALER(date départ;nombre de mois)-1 est suffisante.

    2/ le temps qu'il reste avant la fin de validité en fonction du jour en cours.

    Dans ce cas mettre =AUJOURDHUI() ""en A1 par exemple"" et calculer le temps restant jusqu'à la date calculée en G4 avec la formule :

    =SI(D4<>"";SI(DATEDIF($A$1;G4;"y")>0;DATEDIF($A$1;G4;"y")&SI(DATEDIF($A$1;G4;"y")>1;" ans ";" an ");"")&SI(DATEDIF($A$1;G4;"ym")>0;DATEDIF($A$1;G4;"ym")&" mois ";"")&SI(DATEDIF($A$1;G4;"md")>0;DATEDIF($A$1;G4;"md") & SI(DATEDIF($A$1;G4;"md")>1;" jours";" jour");"");"")

    https://www.cjoint.com/c/OAmm1fJeXhz

    Cordialement

    1
    1. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515
       

      Bonjour à tous,

      .

      Puisque ce sujet n'a pas été mis en résolu j'ajoute une transformation de cette formule avec la fonction LET()

      .

      Avec la date de début en A2 et la date de fin en B2

      .

      =LET(
      Total_An;DATEDIF(A2;B2;"y");
      Total_Mois;DATEDIF(A2;B2;"ym");
      Total_Jour;DATEDIF(A2;B2;"md");
      SI(Total_An>0;Total_An&SI(Total_An>1;" ans ";" an ");"")
      &
      SI(Total_Mois>0;Total_Mois&" mois ";"")
      &
      SI(Total_Jour>0;Total_Jour&SI(Total_Jour>1;" jours";" jour") ;""))

      .

      Cordialement

      0
      1. cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention   416 > PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour,

        Juste une petite alerte, concernant l'unité "md" de "DATEDIF"

        µSoft le signale d'ailleurs, cette utilisation peut engendrer des erreurs, et propose une solution de contournement.

        Pour t'en rendre compte, date1 : 30/11/2023, date2 : 01/03/2024.

        en utilisant ta fonction (et toute autre utilisant l'unité "md"), on obtient 3 mois pile

        Le résultat exact est de 3 mois et 1 jour

        Autre exemple, date1 : 29/08/2017, date2 : 12/03/2019

        Datedif exclusivement donne 1 an 6 mois et 11 jours

        Avec contournement : 1 an 6 mois et 12 jours

        Une solution donnée par Jean-Eric sur un autre forum

        =LET(
        start; A3;
        end; B3;
        y; DATEDIF(start; end; "y");
        m; DATEDIF(start; end; "ym");
        d; end - MOIS.DECALER(start; 12 * y + m);
        v; ASSEMB.V(y; m; d);
        r; JOINDRE.TEXTE(" ";;
           SI.CONDITIONS(
              v = 0; {"";"";""};
              v = 1; 1 & {" an";" mois";" jour"};
              v > 1; v & {" ans";" mois";" jours"}));r)

        Bonne journée

        1
      2. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515 > cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention  
         

        Salut Cousinhub

        .

        Un petit détail ; je suis toujours sur Excel 2013 alors j'utilise Calc de LibreOffice pour les nouvelles fonctions.

        La fonction ASSEMB.V() s'écrit sans le point séparateur ASSEMBV()

        .

        Cordialement

        1
      3. brucine Messages postés 25279 Date d'inscription   Statut Membre Dernière intervention   4 188 > cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour,

        En dehors des bugs pouvant exister avec DATEDIF et c'est dommage, son utilisation conduit toujours à une différence.

        Si A1=01/08/26 B1=24/08/26
        DATEDIF(A1;B1;"d") rend 23 qui est la différence entre les 2 jours.
        Si je veux le nombre de jours écoulés entre les deux dates je dois écrire
        DATEDIF(A1;B1;"d")+1
         

        0
  3. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297
     

    ... Donc pour être exact dans tous les cas :

    =LET(dat;ASSEMB.V(DATEDIF(A2;B2;{"y";"ym"});B2-DATE(ANNEE(B2);MOIS(B2);1));tab;ASSEMB.H(dat;{" an";" mois";" jour"};SI(dat>1;"s, ";", "));TEXTE.AVANT(SUBSTITUE(CONCAT(tab);"ss";"s");",";3))

    Daniel


    1
    1. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515
       

      Bonjour

      .

      Comme dit dans mon dernier commentaire dans LO Calc il faut écrire ASSEMBH() sans le point séparateur

      .

      Cordialement

      0
      1. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297 > PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour,

        Excuse-moi, je n'ai pas compris. Le questionneur utilise Calc de LO ?

        Daniel

        0
      2. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515 > danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention  
         

        Salut danielc0

        .

        Non le demandeur est sur Excel, moi je donnais des précisions en ce qui concerne LibreOffice Calc où ces deux fonctions ne s'écrivent pas de la même façon.

        .

        Cordilament

        0
      3. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297 > PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour, bonjour à tous,

        Compris. Bonne journée à toi (et à tous).

        Daniel

        0
  4. JCB40 Messages postés 3069 Date d'inscription   Statut Membre Dernière intervention   479
     

    Bonjour

     Une solution  exemple en B2

    =G4-D4


    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patoche3344 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention  
     

    Merci Daniel

    Cette formule fonctionne super bien

    Sauf pour une ligne, je ne sais pourquoi

    Très bonne journée

    Cordialemet

    Patoche

    0
    1. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297
       

      Quelles sont les valeurs pour cette ligne ? Et quelle formule utilises-tu ?

      Daniel

      0
  7. Patoche3344
     

    Bonsoir

    Merci de votre réponse

    Moi ma date d'achat est en D7 et ma date de validité en G7

    Je ne comprends pas d’où viens le D4 après le premier Si et le A1 je le comprends mais pas le G4

    Désolé

    Bonne fin de soirée à vous

    Cordialement

    0
  8. PapyLuc51 Messages postés 4579 Date d'inscription   Statut Membre Dernière intervention   1 515
     

    Re/--

    Tu ne comprends pas D4 et G4 dans nos formules. Et bien retourne voir dans ta question initiale, c'est toi qui a donné ces références !!

    D4 c'est ta date de départ et G4 c'est la date de fin de validité.

    Puisque tu changes ces référence par D7 et G7, fais la rectification dans les formules qu'on t'as données.

    Ma formule est longue, je te l'accorde.

    En plus de donner le décompte du temps elle est utile pour tenir compte du singulier et pluriel en ce qui concerne les années et les jours et ne pas inscrire le calcul si l'un d'eux donne 0.

    Le D4 au premier SI est là pour indiquer que cette cellule doit obligatoirement être remplie sinon la formule donne l'erreur #NOMBRE!. Le SI(D4<>""; peut se remplacer par SIERREUR(

    Cordialement

    0
  9. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297
     

    Bonjour à tous,

    Une autre solution :

    =LET(dat;DATEDIF(A2;B2;{"y";"ym";"md"});tab;ASSEMB.H(dat;{" an";" mois";" jour"};SI(dat>1;"s, ";", "));TEXTE.AVANT(SUBSTITUE(CONCAT(tab);"ss";"s");",";3))

    Daniel


    0
    1. cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention   416
       

      Bonjour,

      Oui, mais...non...

      0
      1. cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention   416 > cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention  
         

        Re-,

        J'ai oublié la solution de @PapyLuc51 StatutMembre Post8

        0
      2. danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention   297 > cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour,

        Oui, c'est LE cas : une année bissextile incluse dans le calcul et le mois de début supérieur au mois de fin.

        Daniel

        0
      3. cousinhub29 Messages postés 1170 Date d'inscription   Statut Membre Dernière intervention   416 > danielc0 Messages postés 2229 Date d'inscription   Statut Membre Dernière intervention  
         

        2018?

        0