Formules de dates

Bonjour à tous,

Je rencontre des difficultés quant aux formules à appliquer dans mon fichier Excel pour les cellules suivantes :

1. Feuille « Calcul indemnité légale » : Je souhaiterai que la formule à appliquer aux cellules B77 (pour les années) et C77 (pour les mois) prenne en compte les dates renseignées aux cellules D16 (date d’entrée dans les effectifs) et D18 (date de sortie) pour déterminer automatiquement l’ancienneté à faire apparaitre en année et mois révolus. Dans notre exemple prérempli il s’agirait d’un salarié cumulant 12 ans et 2 mois d’ancienneté.

2. Feuille « Calcul durée de préavis » : Je souhaiterai que la formule à appliquer aux cellules D77 (pour les années) et E77 (pour les mois) prennent en compte les dates renseignées aux cellules D16 (date d’entrée dans les effectifs) et D18 (date de sortie) pour déterminer automatiquement l’ancienneté à faire apparaitre en année et mois révolus. Dans notre exemple prérempli il s’agirait d’un salarié cumulant 9 ans et 2 mois d’ancienneté.

Merci de votre aide.

Cordialement

Bonjour,

Pour les calculs, utilise la fonction (cachée) DATEDIF.

Pour les années :

=DATEDIF("y";Début;Fin)

Pour les mois :

=DATEDIF("ym";Début;Fin)

Cdlt.

Bonsoir, Salut Jean-Eric !

Pour ma part, n'utilisant plus DATEDIF depuis longtemps pour les calculs de dates, car d'un maniement toujours un peu compliqué selon le résultat à obtenir, plus documentée par Microsoft qui déconseille sont utilisation, sans toutefois fournir de fonction équivalente, et pour laquelle on a signalé à plusieurs reprises des résultats inexacts... j'utilise donc des fonctions personnalisées tant pour les calculs d'âge et de différences entre deux dates, ou les calculs d'ancienneté, sachant que dans le cas de l'ancienneté les dates bornes sont toujours incluses.

Une fonction personnalisée permet en outre d'outrepasser les limitations d'Excel à l'année 1900 et corriger l'erreur affectant cette même année 1900, ce qui, je l'accorde est sans incidence sur des calculs relatifs à des dates plus récentes.

Function ANCIENNETE(dn, df)
    Dim d, hui, a%, m%, j%, agr
    Application.Volatile
    On Error Resume Next
    hui = CDate(df) + 1
    If CLng(hui) > 0 And CLng(hui) < 60 Then hui = hui + 1
    d = CDate(dn)
    If CLng(d) > 0 And CLng(d) < 60 Then d = d + 1
    If hui < d Then GoTo errdate
    On Error GoTo errdate
    a = DateDiff("yyyy", d, hui)
    If DateAdd("yyyy", a, d) > hui Then a = a - 1
    d = DateAdd("yyyy", a, d)
    m = DateDiff("m", d, hui)
    If DateAdd("m", m, d) > hui Then m = m - 1
    d = DateAdd("m", m, d)
    j = DateDiff("y", d, hui)
    agr = Array(a, m, j)
    ANCIENNETE = agr
    Exit Function
errdate:
    ANCIENNETE = CVErr(xlErrNA)
End Function

Cette version est justement une version adaptée pour une demande de ma fonction originelle qui renvoyait un résultat sous forme de chaîne. Celle-ci s'utilise sous forme matricielle, en sélectionnant normalement 3 cellules en lignes, tapant = suivi du nom de la fonction, et en arguments les dates de début et de fin, on la valide par Ctrl+Maj+Entrée et elle renvoie un résultat numérique années | mois | jours dans chacune des cellules.

Evidemment, si on ne sélectionne que 2 cellules elle ne renverra que années | mois.

Elle paraît adaptée à la configuration de ton classeur. Tu le verras en B77:C77 de la première feuille.

Pour la 2e, D77 et E77 sont dans une zone vide ?

Cordialement.

Bonjour Jean-Eric, le forum,

screen

le 1er argument que tu as indiqué ne doit pas être placé au début mais à la fin, comme ceci :

=DATEDIF(Début;Fin;"y")

et

=DATEDIF(Début;Fin;"ym")

du moins sur ma version d'Excel 2007 ; serait-ce que ça a changé sur Excel 2016 ?

dhany

Rechercher des sujets similaires à "formules dates"