Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Date de naissance

  • Initiateur de la discussion Initiateur de la discussion Scorpio
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Scorpio

XLDnaute Impliqué
Bonjour le Forum,
Dans ce classeur, j'ai une formule ancienne commençant par =DateDif,
Mais ce DateDif sauf erreur, n'existe plus, mais alors, par quelle formule je pourrais la remplacer ??
Merci de votre aide
Scorpio à ++++
 

Pièces jointes

hoh là la formule n'est pas aussi simple !!!!!
c'est pas différence décanter sous 3 unité qu'il est question ici
reprends la discussion depuis le début et tu va comprendre tout seul 😉

@JNP voila ce que donne ta formule en A1 et la mienne avec ma fonction perso en A2
 
Dernière édition:
Bonsoir,

Autre formule

Code:
=ENT((AUJOURDHUI()-B4)/365,25)& " ans "&MOIS(AUJOURDHUI()-B4)-1&" mois "&ENT(JOUR(AUJOURDHUI()-B4)/7)&" semaines et "&MOD(JOUR(AUJOURDHUI()-B4);7)&" jours"

Slts
 
je l'ai encore un peu amélioré avec le "et " optionel selon le résultat
VB:
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
    Dim a%, m%, j%, dtemp As Date, Erreur$
    If dat2 = 0 Then dat2 = Date
    Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
    If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
    dat1 = CDate(dat1): dat2 = CDate(dat2)
    If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
    a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
    m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
    j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
    Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a, "et ", "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
 
bien vu @Modeste geedee
VB:
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
    Dim a%, m%, j%, dtemp As Date, Erreur$
    If dat2 = 0 Then dat2 = Date
    Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
    If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
    dat1 = CDate(dat1): dat2 = CDate(dat2)
    If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
    a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
    m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
    j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
    Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a And j > 0, "et ", "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
 
Bonsoir à tous

Si je peux me permettre, vos fonction sont sophistiquées.
Bon tous les chemins mènent à Rome, alors j'y vais de ma fonction.
qui tourne depuis une quinzaines d'années, sans retouche, aujourd'hui je ferais autrement.
pièce jointe.

salutation Jean-Paul
 

Pièces jointes

Bonsoir @VIARD
pareil même punition que @riton00
tu n'accorde pas tu te contente de mettre en parenthèses
et tu ne nettoie pas ton résultat si moins d'un mois


ça quand meme du bon quand c'est sophistiqué 😉
VB:
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
    Dim a%, m%, j%, dtemp As Date, Erreur$
    If dat2 = 0 Then dat2 = Date
    Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
    If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
    dat1 = CDate(dat1): dat2 = CDate(dat2)
    If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
    a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
    m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
    j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
    Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a, IIf(j > 0, "et ", ""), "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
d'autant plus que ta fonction est chronophage
pour 4 cellules on voit le curseur d'attente c'est significatif
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
172
Réponses
3
Affichages
152
Réponses
6
Affichages
284
Réponses
16
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…