Comment faire pour calculer les âges avant le 1/1/1900 dans Excel

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 245104
Résumé
Bien que les formules de date de Microsoft Excel ne peuvent être utilisées que pour des dates comprises entre le 1/1/1900 et le 31/12/9999, vous pouvez utiliser une version personnalisée de Microsoft Visual Basic pour l'appliquer aux fonctions, ce qui calcule l'âge (en années) d'une personne ou d'un élément qui a été créé avant le 1er janvier 1900.

back to the top

Utiliser une Macro pour calculer l'âge

Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Ceci inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.
Excel considère les dates antérieures à 1/1/1900 sous forme de texte. Cette fonction fonctionne pour les dates entrées sous forme de texte commençant à 1/1/0001, dates normales et peut gérer des dates la date de début est antérieure à 1900 et de la date de fin est postérieure à 1900. Pour utiliser cette macro, procédez comme suit :
  1. Démarrez Microsoft Excel. Permet d'afficher la feuille de calcul sur lequel vous souhaitez utiliser la fonction.
  2. Appuyez sur ALT + F11 pour basculer vers l'éditeur de Visual Basic.
  3. Dans le menu Insertion , cliquez sur Module.
  4. Tapez le code suivant dans le module :
    ' 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 stvar As String    Dim stmon As String    Dim stday As String    Dim styr As String    Dim endvar As String    Dim endmon As String    Dim endday As String    Dim endyr 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        ' This variable will be used to modify string length.    Dim fx As Integer    fx = 0        ' Calls custom function sfunc which runs the Search worksheet function    ' and returns the results.    ' Searches for the first "/" sign in the start date.    stvar = sfunc("/", stdate)        ' Parse the month and day from the start date.    stmon = Left(stdate, sfunc("/", stdate) - 1)    stday = Mid(stdate, stvar + 1, sfunc("/", stdate, sfunc("/", stdate) + 1) - stvar - 1)        ' Check the length of the day and month strings and modify the string     ' length variable.    If Len(stday) = 1 Then fx = fx + 1    If Len(stmon) = 2 Then fx = fx + 1        ' Parse the year, using information from the string length variable.    styr = Right(stdate, Len(stdate) - (sfunc("/", stdate) + 1) - stvar + fx)            ' 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    ' Reset the string length variable.    fx = 0        ' Parse the first "/" sign from the end date.    endvar = sfunc("/", endate)        ' Parse the month and day from the end date.    endmon = Left(endate, sfunc("/", endate) - 1)    endday = Mid(endate, endvar + 1, sfunc("/", endate, sfunc("/", endate) + 1) - endvar - 1)        ' Check the length of the day and month strings and modify the string     ' length variable.    If Len(endday) = 1 Then fx = fx + 1    If Len(endmon) = 2 Then fx = fx + 1        ' Parse the year, using information from the string length variable.    endyr = Right(endate, Len(endate) - (sfunc("/", endate) + 1) - endvar + fx)            ' 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' This is a second function that the first will call.' It runs the Search worksheet function with arguments passed from AgeFunc.' It is used so that the code is easier to read.Public Function sfunc(x As Variant, y As Variant, Optional z As Variant)    sfunc = Application.WorksheetFunction.Search(x, y, z)End Function					
  5. Enregistrez le fichier.
  6. Tapez les données suivantes :
    A1   01/01/1887A2   02/02/1945						
    Dans la cellule A3, entrez la formule suivante
    = () AgeFuncla date de début,date de fin)
    la date de début est une référence de cellule à votre première date (A1) et date de fin est une référence de cellule de la deuxième date (A2).

    Le résultat devrait être 58.
Remarque: Vérifiez que toutes les dates avant le 1/1/1900 sont valides. Les dates entrées comme texte ne sont pas vérifiées par Excel.

back to the top
Références
Pour plus d'informations sur l'utilisation de l'exemple de code dans cet article, clickthe numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
212536 Comment faire pour exécuter l'exemple de Code à partir des Articles de la Base de connaissances

back to the top
XL2000 xl2003 xl2007

Avertissement : Cet article a été traduit automatiquement.

Eigenschaften

Artikelnummer: 245104 – Letzte Überarbeitung: 04/23/2016 02:44:00 – Revision: 6.0

Microsoft Office Excel 2007, Microsoft Excel 2002, Microsoft Excel 2000 Standard

  • kbhowtomaster kbmt KB245104 KbMtfr
Feedback