Autres inclure des si dans une formule datedif

patricktoulon

XLDnaute Barbatruc
Bonjour a tous

je voudrais inclure des si dans une formule datedif
en effet j'ai une formule qui peut me donner comme résultat
0 ans 0 mois 15 jours

je voudrais inclure des si si les valeurs an et mois et jour donne zero
l'exemple précédemment donné devrait donner par exemple simplement 15 jours
et pour parfaire la chose je voudrais aussi des si >1 mettre les "s"

la formule
=DATEDIF(A1;B1;"y")&" Ans "
&DATEDIF(A1;B1;"ym")&" mois "
&DATEDIF(DATE(ANNEE(B1);MOIS(B1);JOUR(A1));B1;"d")&" jours"
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour patricktoulon,

Définir comme indiqué dans le fichier joint les 3 noms a m j et entrer en C1 la formule :
Code:
=SUPPRESPACE(REPT(a&" an"&SI(a=1;" ";"s ");a>0)&REPT(m&" mois ";m>0)&REPT(j&" jour"&REPT("s";j>1);j>0))
Edit : bah j'oubliais que mois s'écrit avec un "s" au singulier !!!

A+
 

Pièces jointes

  • DATEDIF(1).xlsx
    10 KB · Affichages: 20
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re j'ai tenté cela au moins pour les années en colonne "E" mais visiblement une condition va contre l'autre (difficile sans les( if else de vba)
j'avoue avoir du mal a comprendre le 2d si est dans la condition1 ">0"

=SI(DATEDIF(A1;B1;"y")>0;DATEDIF(A1;B1;"y")&" an"&SI(DATEDIF(A1;B1;"y")>1;"s";"");"")

alors quand j'ai 0 ans c'est bon
quand j'ai plus de 1 c'est bon
mais quand j'ai 1 j'ai "1 ansFAUX"
 

Pièces jointes

  • datedif en formule.xlsx
    9.6 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
re
ok job75
je sais pas pourquoi j'avais essayé la première fois et en étendant la formule ca me mettait #NOMBRE

bon me reste a la digérer ;)

pour que je comprenne
la formule =DATEDIF(Feuil1!A1;Feuil1!B1;"y") dans le name "a",devient une matrice de formule dans le sens A1 et B1 sont modifiés
automatiquement quand j' étends la formule

en fait on créé une sorte de pattern de formule


merci Job75

edit :
ok j'ai pigé
repete formule "a" la valeur numerique du booleen obtenu par >1
pareil pour mois et jour

si je me sert pas des name pour abréger mes formules ca donne ca (je suis pas payé au kilometre) ;)

=REPT(DATEDIF(Feuil1!A1;Feuil1!B1;"y")&" an"&SI(DATEDIF(Feuil1!A1;Feuil1!B1;"y")=1;" ";"s ");DATEDIF(Feuil1!A1;Feuil1!B1;"y")>0)&REPT(DATEDIF(Feuil1!A1;Feuil1!B1;"ym")&" mois ";DATEDIF(Feuil1!A1;Feuil1!B1;"ym")>0)&REPT(DATEDIF(DATE(ANNEE(Feuil1!B1);MOIS(Feuil1!B1);JOUR(Feuil1!A1));Feuil1!B1;"d")&" jour"&REPT("s";DATEDIF(DATE(ANNEE(Feuil1!B1);MOIS(Feuil1!B1);JOUR(Feuil1!A1));Feuil1!B1;"d")>1);DATEDIF(DATE(ANNEE(Feuil1!B1);MOIS(Feuil1!B1);JOUR(Feuil1!A1));Feuil1!B1;"d")>0)

bien vu le rept
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Définir comme indiqué dans le fichier joint les 3 noms a m j et entrer en C1 la formule :
Code:
=SUPPRESPACE(REPT(a&" an"&SI(a=1;" ";"s ");a>0)&REPT(m&" mois ";m>0)&REPT(j&" jour"&REPT("s";j>1);j>0))

? pourquoi dans la définition de "j" ne pas utiliser :
=DATEDIF(Feuil1!A1;Feuil1!B1;"md")

et pourquoi alors :
1571790091609.png
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
en effet il y a bien erreur

pour la formule avec "md" c'est non parce que les jours vont plus loin que 31
j'obtient 121 jours avec tes deux dates
tu utilises alors EXCEL 2007 !!!
sauf que avec Excel 2007 DateDif est buggé lors de l'utilisation du parametre "md"
lorsque la date la plus récente est un année bissextile, en janvier et le jour récent < jour début
 

job75

XLDnaute Barbatruc
Bonjour patricktoulon, Modeste geedee,

Je n'ai pas trop cherché mais ça semble aller en définissant en C1 le nom j par :
Code:
=B1-DATE(ANNEE(B1);MOIS(B1)-(B1<DATE(ANNEE(B1);MOIS(B1);JOUR(A1)));JOUR(A1))
qui se convertit bien sûr en :
Code:
=Feuil1!B1-DATE(ANNEE(Feuil1!B1);MOIS(Feuil1!B1)-(Feuil1!B1<DATE(ANNEE(Feuil1!B1);MOIS(Feuil1!B1);JOUR(Feuil1!A1)));JOUR(Feuil1!A1))
Fichier (2).

A+
 

Pièces jointes

  • DATEDIF(2).xlsx
    10.1 KB · Affichages: 9

Discussions similaires