Trouver un âge pour personne née en 1800

BILOU -  
Raymond PENTIER Messages postés 58229 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Pour trouver un âge, j'applique les formules proposées mais je n'y arrive pas pour les personnes nées en 1800. Quelle est la formule à appliquer
Merci

5 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Salut le forum

    Avec une fonction personnalisée
    Lien : Comment calculer les âges avant 01/01/1900 dans Excel

    Mytå
    3
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour Mytå,

      Merci de cette info mais attention à ceux qui vont l'utiliser car la fonction ne fonctionne qu'avec des dates au format anglais (mm/jj/aaaa) et donc il y a intérêt à corriger la fonction pour l'utiliser avec des dates françaises (jj/mm/aaaa) :inverser stday = et stmon = puis endday = et endmon = .

      Un énorme merci à MS pour donner comme dates de test 01/01/1887 et 02/02/1945 : ils ne se ficheraient pas un peu de nous par hasard ?
      0
    2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le forum

      A tester, j'ai inclus la détection des paramètres régionaux.

      ' This is the initial function. It takes in a start date and an end date.  
      Public Function AgeFunc(stdate As Variant, endate As Variant) 
        
       ' Dim our variables. 
       Dim stmon As String 
       Dim stday As String 
       Dim styr As String 
       Dim stdt() As String 
       Dim endmon As String 
       Dim endday As String 
       Dim endyr As String 
       Dim enddt() As String 
       Dim stmonf As Integer 
       Dim stdayf As Integer 
       Dim styrf As Integer 
       Dim endmonf As Integer 
       Dim enddayf As Integer 
       Dim endyrf As Integer 
       Dim years As Integer 
       Dim Date_Fmt As Long 
       Dim Date_Sep As String 
        
       ' Find regional parameters 
       ' Date_Fmt --> 0 = mois-jour-année, 1 = jour-mois-année , 2 = année-mois-jour 
           Date_Fmt = Application.International(xlDateOrder) 
           Date_Sep = Application.International(xlDateSeparator) 
        
       ' Parse the day, month and year from the dates. 
       Select Case Date_Fmt 
         Case 0 
           stmon = Split(stdate, Date_Sep)(0): endmon = Split(endate, Date_Sep)(0) 
           stday = Split(stdate, Date_Sep)(1): endday = Split(endate, Date_Sep)(1) 
           styr = Split(stdate, Date_Sep)(2): endyr = Split(endate, Date_Sep)(2) 
         Case 1 
           stmon = Split(stdate, Date_Sep)(1): endmon = Split(endate, Date_Sep)(1) 
           stday = Split(stdate, Date_Sep)(0): endday = Split(endate, Date_Sep)(0) 
           styr = Split(stdate, Date_Sep)(2): endyr = Split(endate, Date_Sep)(2) 
         Case 2 
           stmon = Split(stdate, Date_Sep)(1): endmon = Split(endate, Date_Sep)(1) 
           stday = Split(stdate, Date_Sep)(2): endday = Split(endate, Date_Sep)(2) 
           styr = Split(stdate, Date_Sep)(0): endyr = Split(endate, Date_Sep)(0) 
       End Select 
        
       ' Change the text values we obtained to integers for calculation 
       ' purposes. 
       stmonf = CInt(stmon) 
       stdayf = CInt(stday) 
       styrf = CInt(styr) 
        
       ' Check for valid date entries. 
       If stmonf < 1 Or stmonf > 12 Or stdayf < 1 Or stdayf > 31 Or styrf < 1 Then 
           AgeFunc = "Invalid Date" 
           Exit Function 
       End If 
      
       ' Change the text values we obtained to integers for calculation 
       ' purposes. 
       endmonf = CInt(endmon) 
       enddayf = CInt(endday) 
       endyrf = CInt(endyr) 
        
       ' Check for valid date entries. 
       If endmonf < 1 Or endmonf > 12 Or enddayf < 1 Or enddayf > 31 Or endyrf < 1 Then 
           AgeFunc = "Invalid Date" 
           Exit Function 
       End If 
        
       ' Determine the initial number of years by subtracting the first and 
       ' second year. 
       years = endyrf - styrf 
        
       ' Look at the month and day values to make sure a full year has passed. 
       If stmonf > endmonf Then 
           years = years - 1 
       End If 
            
       If stmonf = endmonf And stdayf > enddayf Then 
           years = years - 1 
       End If 
      
       ' Make sure that we are not returning a negative number and, if not, 
       ' return the years. 
       If years < 0 Then 
           AgeFunc = "Invalid Date" 
       Else 
           AgeFunc = years 
       End If 
        
      End Function  
      

      Mytå
      0
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Merci Mytå : pour moi c'est OK !
      0
    4. bilou
       
      merci de Myta
      J'ai appliqué la formule mais j'obtiens une date (jj/mm/aaaa) or je souhaite avoir un âge
      0
    5. bilou
       
      ca ne marche pas
      car : 11/06/1887 (A1) : date de naissance
      29/01/145 (A2) : date de décès
      en appliquant la formule proposée c'est NOMBRE
      0
  2. Raymond PENTIER Messages postés 58229 Date d'inscription   Statut Contributeur Dernière intervention   17 494
     
    Bonjour BILOU.

    Il faut savoir que le calendrier mémorisé dans Excel commence le 1er janvier 1900.
    Donc aucune formule de calcul ne peut concerner une date antérieure au 01/01/1900.

    Une astuce : pour savoir à quel âge est mort quelqu'un né le 18/10/1857 et décédé le 27/11/1892 tu fais le calcul en ajoutant 100 ans à chaque date ; comme s'il était né le 18/10/1957 et mort le 27/11/1992 ...
    1
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour Raymond,

      Excellente astuce qui permet de trouver les ages avec les fonctions appropriées (DATEDIF par exemple) qui vont jusqu'en 9999 et donc pour traiter depuis Henry IV je te propose 300 ans avec cette formule pour une date en A1 transformée en date utilisable + 300 ans et qui gère le mélange avant et après 1900 :

      =SI(ESTNUM(A1);A1+109575;(GAUCHE(A1;NBCAR(A1)-4)&DROITE(A1;4)+300)*1)
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
       
      Bonjour Raymond, bonjour gbinforme,

      Ajouter 100 ans ou 300 ans ne permet pas d'effectuer un calcul correct, pour une date de début comprise entre 1582 (exclu) et 1900 (inclus), il faut ajouter 400 ans (ou un multiple de 400) car seules les années séculaires divisibles par 400 sont bissextiles (1700, 1800 et 1900 ne sont pas bissextiles).

      D'autre part, par erreur, Excel considère 1900 comme bissextile ce qui fait que pour Excel, la veille du jeudi 1er mars 1900 est le mercredi 29 février 1900 au lieu du mercredi 28 février et donc tous les jours fournis entre le 0 janvier 1900 et le 28 février 1900 sont faux (d'où la nécessité d'ajouter aussi 400 pour 1900).

      1582 est l'année de passage du calendrier julien au calendrier grégorien (elle ne comporte que 356 jours).

      Cordialement
      Patrice
      0
    3. Raymond PENTIER Messages postés 58229 Date d'inscription   Statut Contributeur Dernière intervention   17 494
       
      Oh là, Patrice ! Du calme !
      BILOU veut seulement calculer l'âge de quelqu'un. Alors les années bissextiles ne nous intéressent pas du tout.
      Ceci dit, tes affirmations sont certainement exactes et peuvent être utiles pour d'autres problèmes ...
      0
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
       
      C'est simplement à propos d'Henri IV, né le 13/12/1553 et mort le 14/05/1610 à l'age de 56 ans, 5 mois et 1 jour mais qui n'a vécu que 20596 jours (au lieu de 20606).
      0
    5. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Re le forum

      Que s'est il passé du 10 au 19 décembre 1582 ?

      RIEN car ces dix jours n ont pas existé ! le roi Henri III a mis en application la décision du pape Grégoire XIII qui venait d'instituer le calendrier qui porte son nom, car depuis Jules César le calendrier avait accumulé dis jours de retard sur le mouvement apparent du soleil

      Référence : Passage du Calendrier Julien au Calendrier Grégorien (Wikipedia)

      Mytå
      0
  3. Utilisateur anonyme
     
    =2011-Année de naissance
    0
    1. Utilisateur anonyme
       
      en gros ici 2011-1800 ...
      0
    2. Utilisateur anonyme
       
      PS : Excel ou numbers ou Open/libreOffice ?
      0
    3. BILOU
       
      je souhaite trouver l'âge exacte de personnes nées par exemple le 18/09/1882 et décédée le 24/05/1942 dans une tableau XCEL.
      Merci
      0
    4. BILOU
       
      en xcel.
      Merci
      0
    5. BILOU
       
      je n'ai pas compris ce qu'il faut faire exactement.
      J'arrive aux points 1, 2,3 et après que faut-il faire
      Merci
      0
  4. Mike-31 Messages postés 18205 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Un discussion identique sur ce lien, voir si ma formule usine à gaz permet une approche. Pour un code VBA encore une petite attente

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

    Posez votre question
  6. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Salut le forum

    Pourquoi essayer de réinventer la roue : XDate: Extended Date Functions Add-In

    Mytå
    0
    1. Raymond PENTIER Messages postés 58229 Date d'inscription   Statut Contributeur Dernière intervention   17 494
       
      Tu n'aurais pas le même en français ?
      0