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.

Hello,

Une proposition

=LET(
Liste;FRACTIONNER.TEXTE(SUPPRESPACE(Tableau1[@Description]);" ");
ChercheSlash;SIERREUR(CHERCHE("/";Liste);0);
NombreSlash;NBCAR(Liste)-NBCAR(SUBSTITUE(Liste;"/";""));
DateNonFormatee;FILTRE(Liste;(ChercheSlash<>0)*(((ChercheSlash=3)*(NBCAR(Liste)=5))+((NombreSlash=2)*(NBCAR(Liste)=10)));Tableau1[@Date]);
MoisColLib;--DROITE(DateNonFormatee;2);
MoisColDate;MOIS(Tableau1[@Date]);
SI(OU(N(DateNonFormatee) > 0;NBCAR(DateNonFormatee)=10); --DateNonFormatee; SI(MoisColLib > MoisColDate; DATE(ANNEE(Tableau1[@Date])-1; MoisColLib; GAUCHE(DateNonFormatee;2));DATE(ANNEE(Tableau1[@Date]); MoisColLib; GAUCHE(DateNonFormatee;2))))
)

@+

Juste par curiosité, @saboh12617 et @BAROUTE78, ils vous a fallu combien de temps pour mettre au points vos formules (grosso modo) ?

Hey,

Je dirais 20-25 minutes mais ça s'est relativement bien passé étrangement, pas trop de bug ou d'erreur mais je pense que j'aurai pu y passer plus de temps en étant moins réveillé

@+

Bonjour à tous,

Merci de vos réponses que je vais étudier.

Mais rien qu'à les voir je comprends pourquoi je séchais !

Juste par curiosité, @saboh12617 et @BAROUTE78, ils vous a fallu combien de temps pour mettre au points vos formules (grosso modo) ?

Salut,

+/- comme Baroute, disons qu'au début je voyais la formule plus simple mais il y a pas mal de cas à couvrir au final en testant donc ça ralonge.

PS : pour les regex je passe par l'IA, j'arrive à comprendre/relire mais les écrire c'est une autre affaire, je n'utilise pas assez souvent.

Bonjour à tous,

Bon ben ça le fait, mais comment le dire... c'est beaucoup trop compliqué pour moi.

A partir de mon besoin initial j'ai voulu, naïvement, en obtenir plus. Mauvaise idée.

Je simplifie donc : je voudrais obtenir les dates de la colonne Description quand elles existent et quelles sont au format jour/mois uniquement. Ce sont des dépenses qui interviennent soit le mois courant, soit le mois suivant, et je voudrais la date de ces dépenses. Ce sont les valeurs en vert dans le tableau.

Dans tous les autres cas je voudrais la valeur de la colonne Date.

Je joins un nouveau fichier exemple dans lequel j'ai rajouté des lignes pour l'année précédente (la formule de saboh12617 est en erreur sur ces dates).

Si cela vous tente, pouvez-vous simplifier vos formules dans ce sens.

Merci de vos réponses

Edit : modif fichier

Rechercher des sujets similaires à "extraire reconstituer date"