Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Dates et expressions régulières
Dans les deux précédents volets, nous avons appris à découper des
informations d'adresses postales et à extraire très précisément les
numéros de téléphone englués dans des
chaînes de textes. Pour cela, nous avons exploité la fabuleuse
fonction Excel RegEx.Extraire. Toujours grâce à elle, nous allons maintenant apprendre à extirper des
informations de dates embarquées là encore, dans des
chaînes de textes.
Classeur Excel à télécharger
Nous suggérons d'appuyer les travaux sur un
classeur Excel existant hébergeant des
textes qui emprisonnent des
dates.

Nous découvrons un tableau relatant des faits historiques, mentionnés avec leurs dates. Les
jours sont codés sur
2 chiffres et les
années sur
4 chiffres. Les
mois en revanche sont écrits en
toutes lettres. C'est ce qui fait toute la particularité de l'extraction que nous devons produire.
L'expression régulière
Nous devons être en mesure de bâtir une expression régulière capable de débusquer des séquences tout à fait remarquables. Nous devons déceler la présence de
2 chiffres consécutifs suivis d'un espace, puis de
plusieurs lettres ponctuées par un nouvel espace avec en bout de course une
succession de quatre chiffres pour l'
année.
- Cliquer sur la case de la première date à extirper pour sélectionner la cellule C4,
- Taper le symbole égal (=) pour débuter la construction de la formule,
- Inscrire la fonction régulière d'extraction, suivie d'une parenthèse, soit : RegEx.Extraire(,
- Désigner le premier fait historique en cliquant sur sa cellule B4,
- Taper un point-virgule (;) pour passer dans l'argument de la séquence remarquable,
- Ouvrir les guillemets pour accueillir l'expression régulière,
- Commencer la séquence comme suit : \d{2}\s,
Nous cherchons donc les 2 premiers chiffres suivis d'un espace.
- Poursuivre l'expression comme suit : [a-zA-Z-ûé]+\s,
A la suite du jour de la date, nous cherchons donc les mois en toutes lettres, sur un nombre indéfini (+), qu'elles soient en minuscules ou majuscules, pouvant accueillir des accents (ûé) et nécessairement suivies d'un espace (\s).
- Enfin, terminer l'expression de cette manière : \d{4},
Après les mois en lettres, nous cherchons donc une succession de 4 chiffres pour les années.
- Fermer les guillemets de l'expression régulière,
- Fermer la parenthèse de la fonction RegEx.Extraire,
- Valider la formule par le raccourci clavier CTRL + Entrée,
- Double cliquer sur la poignée du résultat pour répliquer la logique sur la hauteur du tableau,

Comme vous pouvez l'apprécier, nous parvenons à extraire très précisément chacune des dates, pourtant engluées dans des chaînes de textes respectives.
Le jour et l'année
Maintenant que le plus dur est fait, il est presque trivial de remplir les autres cases vides du tableau. Pour isoler les jours, il suffit de construire et de répliquer la formule suivante :
=REGEX.EXTRAIRE(B4;"\d{2}\s")
Pour isoler les années, il suffit de bâtir et de répliquer la formule suivante :
=REGEX.EXTRAIRE(B4;"\d{4}")
Rendez-vous compte de la simplicité de ces formules pour réaliser pourtant des extractions complexes. Merci donc aux
expressions régulières et à cette fameuse
fonction RegEx.Extraire.
Isoler le mois
Pour extraire les mois qui sont inscrits en toutes lettres, la formule est plus alambiquée. Il s'agit d'isoler ce qui est placé après le jour trouvé par expression régulière et en même temps placé avant l'année, elle aussi trouvée par expression régulière. Bref, nous devons imbriquer la
fonction Texte.Avant dans la
fonction Texte.Apres tout en exploitant les précédentes
séquences remarquables dans la
fonction RegEx.Extraire.
- Cliquer sur la case du premier mois à isoler pour sélectionner la cellule E4,
- Taper le symbole égal (=) pour amorcer la construction de la formule,
- Inscrire la fonction pour prélever en aval, suivie d'une parenthèse, soit : Texte.Apres(,
- Lui imbriquer la fonction pour prélever en amont, suivie d'une parenthèse : Texte.Avant(,
- Désigner le premier fait historique en cliquant sur sa cellule B4,
- Taper un point-virgule (;) pour passer dans l'argument du délimiteur,
Nous devons prélever tout ce qui est placé avant l'année à débusquer.
- Reproduire la syntaxe permettant d'isoler l'année : REGEX.EXTRAIRE(B4;"\s\d{4}"),
- Fermer la parenthèse de la fonction Texte.Avant,
De fait, nous sommes de retour dans les bornes de la
fonction Texte.Apres. Dans cette première découpe, nous ne devons conserver que ce qui est placé après le jour à débusquer. Il en résultera le mois en toutes lettres.
- Taper un point-virgule pour passer dans l'argument du délimiteur de la fonction Texte.Apres,
- Reproduire la syntaxe pour trouver le jour : REGEX.EXTRAIRE(B4;"\s\d{2}\s"),
- Fermer la parenthèse de la fonction Texte.Apres,
- Valider la formule par le raccourci clavier CTRL + Entrée,
- Puis, répliquer la logique par double clic sur la poignée du résultat,

Là encore, l'opération est un succès. Nous parvenons à isoler tous les mois des dates, pourtant inscrits en toutes lettres dans des chaînes de textes. La syntaxe complète de la
formule d'extraction que nous avons construite est la suivante :
=TEXTE.APRES(TEXTE.AVANT(B4; REGEX.EXTRAIRE(B4; "\s\d{4}")); REGEX.EXTRAIRE(B4; "\s\d{2}\s"))