Extraire et reconstituer date

Bonjour à tous,

Dans une liste de libellés bancaires, je voudrais obtenir la date contenue dans la colonne Description si elle existe et qu'elle est au format jour/mois ou jour/mois/année, sinon prendre la date de la colonne Date. Attention au changement d'année.

Pas de vba et pour Excel 2021 et 365

Merci de vos réponses et de vos idées, je sèche lamentablement.

Hello,

alors là...

J'étais persuadé que c'était impossible vu le gloubiboulga des données, donc pour rigoler j'ai donné ça à Claude.

Ben j'en suis tout étonné mais il l'a fait

Je n'y serais jamais arrivé seul et, sincèrement, je me pose la question si qq'un sur les forums aurait pu arrivé à ça en moins de 10 minutes

=LET(
 txt; $B4;
 refDate; $A4;
 mots; SUPPRESPACE(STXT(SUBSTITUE(txt;" ";REPT(" ";100));(SEQUENCE(30)-1)*100+1;100));
 estComplet; (NBCAR(mots)=10)*SIERREUR(ESTNUM(--GAUCHE(mots;2))*1;0)*(STXT(mots;3;1)="/")*SIERREUR(ESTNUM(--STXT(mots;4;2))*1;0)*(STXT(mots;6;1)="/")*SIERREUR(ESTNUM(--DROITE(mots;4))*1;0);
 estPartiel; (NBCAR(mots)=5)*SIERREUR(ESTNUM(--GAUCHE(mots;2))*1;0)*(STXT(mots;3;1)="/")*SIERREUR(ESTNUM(--DROITE(mots;2))*1;0);
 posComplet; SIERREUR(EQUIV(1;estComplet;0);0);
 posPartiel; SIERREUR(EQUIV(1;estPartiel;0);0);
 motComplet; SI(posComplet>0;INDEX(mots;posComplet);"");
 motPartiel; SI(posPartiel>0;INDEX(mots;posPartiel);"");
 jjC; SIERREUR(--GAUCHE(motComplet;2);1);
 mmC; SIERREUR(--STXT(motComplet;4;2);1);
 aaC; SIERREUR(--DROITE(motComplet;4);2000);
 dateComplete; SI(ET(motComplet<>"";mmC>=1;mmC<=12;jjC>=1;jjC<=31;JOUR(DATE(aaC;mmC;jjC))=jjC);DATE(aaC;mmC;jjC);0);
 jjP; SIERREUR(--GAUCHE(motPartiel;2);1);
 mmP; SIERREUR(--DROITE(motPartiel;2);1);
 aaP; ANNEE(refDate)-SI(mmP>MOIS(refDate);1;0);
 datePartielle; SI(ET(motPartiel<>"";mmP>=1;mmP<=12;jjP>=1;jjP<=31;JOUR(DATE(aaP;mmP;jjP))=jjP);DATE(aaP;mmP;jjP);0);
 SI(dateComplete<>0;dateComplete;SI(datePartielle<>0;datePartielle;refDate))
)

Je révise mon jugement sur l'IA sur ce coup

Bonjour à tous,

Je serai parti sur des formules plus modernes que Claude... Un premier jet me donne de bons résultats. D'ailleurs les voici :

image

Il y a juste sur les virements où je suis sceptique. Puisque d'après ma compréhension la colonne B est prioritaire sur A, pourquoi ne pas récupérer la date indiquée ?

Voici ma proposition :

=LET(
savedDate; A4;
foundDateT; REGEX.EXTRAIRE(Tableau1[@Description];"\b(\d{2}/\d{2})(?=\s*|/\d{2,4}\b)");
_m0; SI(
OU(1*TEXTE.APRES(foundDateT;"/")>12;1*TEXTE.APRES(foundDateT;"/")<1;ESTERREUR(1*TEXTE.APRES(foundDateT;"/")));
NA();
1*TEXTE.APRES(foundDateT;"/"));
_d; SI(ESTERREUR(_m0); JOUR(savedDate); 1*TEXTE.AVANT(foundDateT;"/"));
_m; SI(ESTERREUR(_m0); MOIS(savedDate); _m0);
_yT0; TEXTE.AVANT(TEXTE.APRES(Tableau1[@Description]; foundDateT); " ");
_yT1; SI(REGEX.TEST(_yT0; "(?:\d{2}|\d{4})"); 1*_yT0 + 2000 * ((1*_yT0)<100); NA());
_y; SI(ESTERREUR(_yT1); ANNEE(savedDate) - 1*(_m=12); _yT1);
DATE(_y;_m;_d)
)

Hello

@saboh12617 les fonctions REGEX ne sont pas connues de 2021 il me semble

Hello

@saboh12617 les fonctions REGEX ne sont pas connues de 2021 il me semble

Ah bien vu ! J'avais oublié... Formule 365 exclusivement du coup.

Rechercher des sujets similaires à "extraire reconstituer date"