[date]

Bonjour,

ancien étudiant en info, j'ai de bonne bases de prog' , mais perdu mes repères quand même :(

j'ai différentes questions, mais la principale reste sur les bases numeriques d'une date (31 pour les jours, 12 pour les mois)

j'ai cette configuration:


=SI(K8<E8;
(DATEDIF(E8;F8;"Y"))+((DATEDIF(K8;L8;"Y"))) & " ans "
& (DATEDIF(E8;F8;"YM"))+((DATEDIF(K8;L8;"YM"))) & " mois "
& (DATEDIF(E8;F8;"MD"))+((DATEDIF(K8;L8;"MD"))) & "jours";DATEDIF(E8;F8;"Y")
& SI(DATEDIF(E8;F8;"Y")>1;
" ans, ";" an, ")&DATEDIF(E8;F8;"YM") &" mois et "&DATEDIF(E8;F8;"MD")&SI(DATEDIF(E8;F8;"MD")>1;" jours";" jour"))

NB: j'ai fait un mix d'un code trouvé qui gérait le pluriel/singulier que j'ai brut dans les colonnes G J M, et du perso qui fait les sommes.(N)

Le problème vient qu'en additionnant 2 nombres et bien on perds la notion de date, et que je me retrouve avec des "1 an 13 mois 48 jours" qui m'arrangerait de rester avec une bases numéraire de date: "2 ans 2 mois 18 jours"

Merci d'avance!

config: excel 2000 (le vieux sans ruban la :p )

EDIT: j'aurais plus tard une gestion des dates en soustraction aussi "la personne a X ans Y mois Z jours d'ancienneté MOINS X' ans Y' jours Z' ans d'indisponibilité)

4 réponses

  1. Contributeur
    Bonjour et bienvenue.

    Je veux bien essayer de t'aider, mais à condition que tu envoies le fichier Excel, et non une simple copie d'écran ...
    On ne voit pas même pas les titres de lignes et de colonnes !

    C'est bien, la retraite ! Surtout aux Antilles ... :-) 
    Raymond (INSA, AFPA, CF/R)
    0
    1. merci!
      comment?
      0
  2. Contributeur
    En O4 je mets la formule =(D4-C4+1) + (J4-I4+SI(J4>I4;1;0))
    En P4 je mets la formule =C4+O4
    En Q4 je mets la formule =DATEDIF(C4;P4;"Y")&SI(DATEDIF(C4;P4;"Y")>1;" ans, ";" an, ")&DATEDIF(C4;P4;"YM") &" mois et "&DATEDIF(C4;P4;"MD")&SI(DATEDIF(C4;P4;"MD")>1;" jours";" jour")
    0
    1. rebonjour serait-il possible d'avoir des éclaircissement sur votre code qui me semble fonctionnel:
      O4: pourquoi +1? pourquoi cette fonction SI ? (puisque cela concerne des dates de début et de fin SI retournera toujours 1..
      et tout simplement pourquoi ces calculs internediaires, je ne suis surement pas assez concentré mais je ne comprends pas

      merci

      edit: je pense que savoir l'intitulé de la colonne P4 devrait deja bien m'aider
      edit 2: Mon SI de base (coller dans mon premier message) permettait de prendre en compte si la date de debut de SPV (C4) était antérieur a celle du service militaire (I4) alors l'ancienneté etait C4 (le service militaire n'est alors pas compté dans l'ancienneté puisqu'il est en meme temps que le SPV) suis je assez clair ?

      le but de base est de calculer l'ancienneté d'une personne; l'addition des difdate SPV + SM se fait uniquement si elles ne se superpose pas dans le temps.
      0
    2. Contributeur
      @djlau74Q1 : En O4 je mets la formule =(D4-C4+1) + (J4-I4+SI(J4>I4;1;0))
      En effet si C4 contient 2/12/2015 et D4 contient 5/12/2015, la fonction DATEDIF compte les 4 jours écoulés depuis le 2 jusqu'au 5, ces dates incluses.
      Mais la différence arithmétique 5-2 donne seulement 3 ; il faut donc ajouter 1 jour pour englober la date de début. Et pour les colonnes J et I je n'ajoute 1 que si J4>I4, ce qui n'est pas le cas quand J4 et I4 sont vides, et que par conséquent égaux ...
      0
    3. Contributeur
      @Raymond PENTIERQ2 : "pourquoi ces calculs internediaires" ?
      Pour résoudre ton problème " je me retrouve avec
      1 an 13 mois 48 jours
      qui m'arrangerait de rester avec ...
      2 ans 2 mois 18 jours 
      ", ce qui est légitime !
      Il faut donc :
      - en O calculer le cumul de jours des deux périodes,
      - en P afficher une date fictive de fin (si les deux périodes étaient sans coupure)
      - en Q utiliser ta formule avec DATEDIF
      0
  3. Contributeur
    Bonjour,

    si il n'y a pas d'interruptions, DATEDIF() sur MIN(C4;F4;I4) et MAX(D4;G4;J4) ça ne le fait pas ?
    eric
    0
    1. Contributeur
      Bonjour eriiic.

      Je ne suis intervenu que sur le problème de djlau74 "je me retrouve avec 1 an 13 mois 48 jours qui m'arrangerait de rester avec ... 2 ans 2 mois 18 jours", sans chercher à comprendre et à traiter son edit 2 :
      Mon SI de base (coller dans mon premier message) permettait de prendre en compte si la date de debut de SPV (C4) était antérieur a celle du service militaire (I4) alors l'ancienneté etait C4 (le service militaire n'est alors pas compté dans l'ancienneté puisqu'il est en meme temps que le SPV) suis je assez clair ? 
      le but de base est de calculer l'ancienneté d'une personne; l'addition des difdate SPV + SM se fait uniquement si elles ne se superpose pas dans le temps.
      Modifié par djlau74 le 24/12/2015 à 18:09
      Je ne sais donc pas trop si ta suggestion répond à sa nouvelle demande ...

      Salutations à tous les deux.
      0
      1. Contributeur
        Salut raymond,
        Fort possible, je n'ai pas vu cet ajout non plus. Et vu que son fichier ne donnait pas les bonnes réponses attendues en plus, je n'ai pas eu le courage de regarder le détail de ses calculs pour savoir si ma proposition collait ou pas.
        eric
        0
      2. Bonjour a vous, je n'ai pas retouché le travail depuis le 26, merci de vos réponses, j'avance du coup, doucement je ne suis encore pas très au point non plus sur ce que je souhaite, alors forcément c'est déjà moins évidant :)

        Merci de vos aides, ceci-dit je ne connaissait pas la fonction MIN() qui, n'est pas tres compliqué en effet, et peut s'averer pratique, mais je ne comprends pas (je suis désolé) l'idée d'eriiic du "datedif() sur min()"

        si jamais tu repasses par la ;)

        sinon je vais deja éclairer la ou je veux avancer, ca sera un bon début :)

        merci encore!
        0
      3. Contributeur
        Bonjour,

        Si il n'y aucune interruption la date de début est MIN(C4;F4;I4) et la date de fin est MAX(D4;G4;J4).
        Tu fais donc datedif() sur ces 2 dates calculées par min() et max()
        eric
        0
      4. Bonjour, encore merci de l'attention que vous portez a vos réponses, malheureusement, les interruptions sont possibles, quelqu'un a pu faire son service militaire 10 ans avant des dates début de SPV ou SPP, d'ou la "complexité" de la chose.
        Le mieux serait une gestion de type calendrier avec gestion des differentes plages (les 3) avec superpositions et interruption possible, apres peut etre que je suis parti treeees loin et que il est possible de se simplifier la vie :)

        merci!
        0
      5. Contributeur
        Ok, alors la réponse de raymond fait l'affaire.
        0