TUTO : COMMENT COMPTER L’ÂGE DES PERSONNES NÉES AVANT 1900 SUR EXCEL (avec et sans VBA)

Dans ce tutoriel, je vais vous montrer comment calculer simplement l’âge d’une personne née avant le premier janvier 1900. Pour cela nous allons découvrir deux méthodes : l’une basée sur la création du macro complémentaire développée en VBA, l’autre en utilisant une simple formule EXCEL.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

 

Tutoriel Vidéo

 

 

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

 

1. Présentation

Rappelez-vous, dans les chapitres précédents, nous avions déjà eu l’occasion de découvrir que pour Excel une date n’est en réalité qu’un simple nombre dont le format spécifique permet de lui donner l’apparence d’une date.

Ce numéro de série commence par le chiffre 1, lequel correspond à la date du 1er janvier 1900.

Pour nous en rendre compte, il suffit de saisir la valeur « 1 » dans une cellule :

Excel formation - Compter les âges avant 1900 - 01

Puis de modifier le format de la cellule pour que celle-ci prenne l’apparence d’une date :

Excel formation - Compter les âges avant 1900 - 02

La date affichée correspond bien au 1er janvier 1900.

La conséquence de ce fonctionnement, est que si nous saisissons une date plus ancienne, Excel ne va pas être en mesure de la traiter comme telle :

Excel formation - Compter les âges avant 1900 - 03

En effet, ici le texte est aligné sur la gauche de la cellule, ce qui signifie qu’il s’agit d’une chaîne de caractères.

Aussi, tout calcul reposant dessus est simplement impossible !

Excel formation - Compter les âges avant 1900 - 04

Mais rassurez-vous, nous allons maintenant découvrir deux méthodes qui vont permettre de passer outre cette limitation !

 

2. Calcul d’âge avant 1900 : par formule

En réalité les techniques que nous allons voir ici reposent sur une même astuce : nous allons modifier les dates de références pour faire entrer celles-ci dans la plage d’acceptation des dates d’Excel (c’est-à-dire une date comprise entre le 1er janvier 1900 et le 31/12/9999) en ajoutant un grand nombre d’années à ces dates !

Évidemment, nous ne pouvons pas utiliser simplement les formules de gestion des dates que nous avons déjà vues dans les chapitres précédents (par exemple la formule MOIS.DECALER()), car il faudrait pour cela que le point de départ soit déjà une date.

Nous allons donc devoir :

  • Décomposer la date,
  • Puis la recomposer pour en ajouter le nombre d’années correspondantes !

Pour cela, imaginons que nous souhaitions ajouter 1900 années aux deux dates de références, qui pour rappel sont saisies sous le format jj/mm/aaaa.

Pour décomposer la date, nous allons devoir utiliser les formules suivantes :

  • Jour : formule GAUCHE(maDate;2) : qui permet de récupérer les deux caractères situés sur la gauche
  • Mois : formule STXT(maDate;4;2) : qui permet de récupérer les deux caractères situés à partir du quatrième caractère
  • Année : formule DROITE(maDate;4) : qui permet de récupérer les quatre caractères situés sur la droite

Excel formation - Compter les âges avant 1900 - 05

Ces trois formules que nous allons simplement intégrer dans une formule DATE() qui pour rappel permet de reconstituer une date à partir des différents éléments qui la compose (jour, mois, année) :

 =DATE(DROITE(B7;4);STXT(B7;4;2);GAUCHE(B7;2))  
Excel formation - Compter les âges avant 1900 - 06

Comme vous pouvez le constater à ce moment-là, Excel a automatiquement utilisé notre fameuse astuce pour rendre la création de ces dates possible ! En effet, sans même que nous ne lui demandions, il a modifié l’année de référence pour que celle-ci soit intégrée dans son espace de travail.

Il a donc ajouté 1900 années (1900+1832=3732)

En effectuant la même opération sur les dates, il est maintenant possible de calculer l’âge de la personne :

 

 =ANNEE(C8-C7)-1900 

 

Excel formation - Compter les âges avant 1900 - 07

Attention toutefois, comme l'a justement fait remarquer Cesco Vap sur le groupe Facebook « Entraide Excel et VBA », il existe encore une petite subtilité à considérer : comment peut-on simplement calculer l'âge d'une personne née avant 1900, mais dont la date de décès interviendrait après cette année ?

L'astuce consiste à transformer la date sous un format texte avec la fonction TEXTE() afin de remplacer la simple référence à la cellule B7 par « TEXTE(B7;"JJ/MM/AAAA") » :

=DATE(DROITE(B7;4);STXT(B7;4;2);GAUCHE(B7;2))  

Devient alors :
​=DATE(DROITE(TEXTE(B7;"JJ/MM/AAAA");4)+1900;STXT(TEXTE(B7;"JJ/MM/AAAA");4;2);GAUCHE(TEXTE(B7;"JJ/MM/AAAA");2))

Ici, nous avons ajouté directement les 1900 années dans la première partie de la fonction DATE() pour être certain que toutes les dates soient comparables les unes aux autres (en effet, Excel n'ajoute ces années que si la date est inférieure à l'année 1900).

Cela permet de traiter indifféremment les différents cas de figure ! 

 

3. Calcul d’âge avant 1900 : par macro

À présent, voyons comment créer une macro complémentaire qui permette de réaliser ce calcul en une seule opération, et surtout que nous pourrons ajouter dans un classeur de macros complémentaire pour être réutilisé très simplement.

Tout d’abord, nous commençons par lancer l’éditeur VBE (Alt+F11), puis nous créons un nouveau module dans lequel nous viendrons saisir notre macro (Menu Insertion/Module) :

Excel formation - Compter les âges avant 1900 - 08

Dans ce nouveau module nous commençons par créer une nouvelle fonction qui va consister à créer une nouvelle date à partir d’une date de référence, exactement comme nous venons de le faire dans la partie précédente :

Function dateModifiee(maDate As String) As Date

     dateModifiee = DateSerial(Right(maDate, 4), Mid(maDate, 4, 2), Left(maDate, 2))

End Function

Nous avons utilisé ici les fonction VBA suivantes :

  • La fonction DateSerial : permet de construire une date à partir de l’année, du mois et du jour (équivalent de la fonction Excel DATE()),
  • La fonction Right : permet de récupérer une partie d’une chaîne de caractère situé sur la gauche de celle-ci (équivalent de la fonction Excel GAUCHE()),
  • La fonction Left : permet de récupérer une partie d’une chaîne de caractère situé sur la droite de celle-ci (équivalent de la fonction Excel DROITE()),
  • La fonction Mid : permet de récupérer une partie d’une chaîne de caractère situé au milieu de celle-ci (équivalent de la fonction Excel STXT())

Nous créons donc une nouvelle fonction qui porte le nom de dateModifiee et qui attend comme argument une date sous la forme d’une chaîne de caractères.

N’avons plus qu’à constituer une nouvelle date, toujours suivant la même méthode.

En revanche, lorsque nous testons cette fonction dans la feuille de calcul, en l’appelant par son nom, le résultat retourné sera une erreur :

Excel formation - Compter les âges avant 1900 - 09

En effet, contrairement aux formules EXCEL, VBA n’adapte pas la date automatiquement, et c’est à nous de modifier la fonction pour ajouter les années supplémentaires :

Function dateModifiee(maDate As String) As Date

    dateModifiee = DateSerial(Right(maDate, 4) + 1900, Mid(maDate, 4, 2), Left(maDate, 2)) ' Ajout de 1900 année sur la date de référence

End Function

Notre nouvelle date est maintenant correcte :

Excel formation - Compter les âges avant 1900 - 10

Ensuite libre à nous de créer une seconde fonction personnalisée pour calculer automatiquement l’âge de la personne :

Function calculAge(dateDebut As String, dateFin As String) As Integer

    calculAge = Year(dateModifiee(dateFin) - dateModifiee(dateDebut)) - 1900

End Function

Nous avons utilisé ici les fonction VBA suivantes :

Excel formation - Compter les âges avant 1900 - 11

 

 



Articles qui pourraient vous intéresser

COMMENT DUPLIQUER 500 FOIS (OU PLUS !) UNE FEUILLE DE CALCUL EXCEL EN 1 CLIC

COMMENT CONVERTIR DES COORDONNÉES GPS DEGRÉS MINUTES SECONDES (DMS) EN DEGRÉS DÉCIMAUX (DD) EXCEL

COMMENT SUPPRIMER AUTOMATIQUEMENT LES ACCENTS DANS EXCEL

COMMENT UTILISER LES COORDONNÉES GPS SUR UNE CARTE EXCEL - BONUS : COMBINER DEUX TABLEAUX

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.