Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Calcul de l'âge. Résolu

Paulle

XLDnaute Occasionnel
Bonjour,

Je voudrai calculer l’âge de chaque personne.

Mais je cale quand dans les dates de naissances, les années sont inférieures à 1900.

Merci pour votre aide.
 

Pièces jointes

  • Nais01.xlsx
    17.5 KB · Affichages: 10

nauwel

XLDnaute Nouveau
Je crois que ça ne marche pas avant 1900 "Excel enregistre la date comme un nombre séquentiel : généralement sous la forme du nombre de jours depuis le 1er janvier 1900". j'avais bricolé ça avec une formule que qq m'avait passé...(je suis un grand débutant!)
 

Pièces jointes

  • Nais01(1).xlsx
    12.8 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
Bonjour @Paulle
avant de poser une question ,il existe un moteur de recherche dans le site
en dessous 1800 se serait faux car le calendrier à changé pour certains en 17xx
je m’arrête donc à 1800
 
Dernière édition:

Paulle

XLDnaute Occasionnel
J'ai mis en pratique ta formule.
J'ai juste ajouté un Si car quand je n'ai pas de date de naissance, il était retourné 122 ans.
=SI(D3>0;DATEDIFF_AMJ4(D3;F3;1);" ")
Merci encore.
 

Pièces jointes

  • Nais03.xlsm
    25.6 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonsoir à tous,

Une solution par formule, en H3 :
Code:
=SI.CONDITIONS(F3>0;DATEDIF(SI(ESTNUM(D3);MOIS.DECALER(D3;4800);DATEVAL(GAUCHE(D3;6)&DROITE(D3;4)+400));SI(ESTNUM(F3);MOIS.DECALER(F3;4800);DATEVAL(GAUCHE(F3;6)&DROITE(F3;4)+400));"y");D3=0;"";D3>0;DATEDIF(SI(ESTNUM(D3);MOIS.DECALER(D3;4800);DATEVAL(GAUCHE(D3;6)&DROITE(D3;4)+400));MOIS.DECALER(AUJOURDHUI();4800);"y"))
A+
 

Pièces jointes

  • Nais01.xlsx
    11.8 KB · Affichages: 5

job75

XLDnaute Barbatruc
J'utilisais SI.CONDITIONS parce que Paulle l'utilisait dans son fichier du post #1.

Une formule bien plus simple qui fonctionne sur toutes versions Excel :
Code:
=SI(D3="";"";DATEDIF(SI(ESTNUM(D3);MOIS.DECALER(D3;4800);DATEVAL(GAUCHE(D3;6)&DROITE(D3;4)+400));SI(ESTNUM(-F3);MOIS.DECALER(SI(F3=0;AUJOURDHUI();F3);4800);DATEVAL(GAUCHE(F3;6)&DROITE(F3;4)+400));"y"))
 

Pièces jointes

  • Nais02.xlsx
    11.8 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
re
moi j'avais fait ceci
VB:
=DATEDIF(SI(ESTNUM(CNUM(A1));CNUM(A1)+(365,25*100);DATEVAL(GAUCHE(A1;6)&DROITE(A1;4)+100));SI(ESTNUM(CNUM(B1));CNUM(B1)+(365,25*100);DATEVAL(GAUCHE(B1;6)&DROITE(B1;4)+100));"y")&" an(s)"

chez moi 2013 ESTNUM me renvoie faux même sur une date valide



 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour,

Bah sur Excel une date valide est toujours numérique sauf si elle est au format Texte.

Par contre en VBA elle n'est pas numérique si elle est au format Date.

A+
re
Bonjour @job75 oui ben regarde


je viens de retaper les dates et là maintenant ça marche
avant je les avais tapé aussi
bizarre ce truc
remarque enum(cnum(A2)) permet de travailler sur une date valide meme si la cellule est en texte
 

TooFatBoy

XLDnaute Barbatruc
@patricktoulon : rien qu'avec l'alignement on voyait bien que tu avais des cellules en texte et d'autres en nombre.

Mais vu que les années des cellules alignées à gauche sont inférieures à 1900, c'est normal ça ne peut pas être considéré par Excel comme étant des dates.
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @TooFatBoy
je parlais de la ligne 22/08/1930 qui est une date valide pour excel
toute les dates je l'es ai tapé a la main
et celle ci je ne sais pas pourquoi c'est mise au format text alors que je suis en format standard partout


dans tout les cas pour palier a ce soucis il est préférable d'utiliser =enum(cnum(...))
comme ça pas de soucis avec les cellules au format texte
 

Discussions similaires

Réponses
7
Affichages
381
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…