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.
Double cliquer sur le fichier réceptionné pour l'ouvrir dans Excel,
Puis, cliquer sur le bouton Activer la modification dans le bandeau de sécurité,
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 :