Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Extraire entre deux caractères spéciaux
Grâce aux
expressions régulières et à la fameuse
fonction Excel RegEx.Extraire, nous allons maintenant apprendre à isoler tout ce qui se trouve
entre deux caractères spéciaux.

Sur l'exemple illustré par la capture, ce sont les
parenthèses qui sont concernées, ouvrante et fermante. A partir d'une liste en première colonne d'un tableau, nous parvenons à isoler tous les scores capturés par des parenthèses, en deuxième colonne du tableau.
Classeur Excel à télécharger
Nous proposons de baser l'étude sur un
classeur Excel existant.
Nous trouvons bien le tableau de la présentation mais bien sûr, les deux dernières colonnes sont encore vides à ce stade.
Initier l'extraction
La
fonction RegEx.Extraire est une
fonction matricielle. En conséquence, nous pouvons la faire agir sur toute une plage à la fois.
- Cliquer sur la première case vide de la deuxième colonne pour sélectionner la cellule E4,
- 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 toutes les cellules de la première colonne, soit la plage D4:D14,
- Puis, taper un point-virgule (;) pour passer dans l'argument du motif à construire,
Après la parenthèse ouvrante
Les
parenthèses sont des caractères déjà utilisés dans les constructions des
expressions régulières. Donc, pour les exploiter comme des symboles remarquables à déceler dans les chaînes, nous devons les échapper (\).
- Ouvrir un guillemet et taper un antislash suivi d'une parenthèse ouvrante : "\(,
- Dès lors, ouvrir une parenthèse pour annoncer le groupe à suivre,
Tout sauf la parenthèse fermante
Dans notre cas, la signature de ce qui est placé entre les parenthèses est toute particulière puisqu'elle n'est composée que de chiffres et d'une seule virgule pour les décimales. Néanmoins, nous souhaitons construire un
motif capable de s'adapter à tous les contextes. L'idée consiste à chercher une succession de n'importe quels caractères
à l'exception de la parenthèse fermante qui constitue l'autre délimiteur.
- Poursuivre la construction de l'expression régulière comme suit : [^)]+,
Ici, le symbole de l'accent circonflexe placé devant la parenthèse fermante agit comme une négation. Tout est cherché à l'exception de la parenthèse fermante sur un nombre indéfini de caractères (+).
- Fermer maintenant la parenthèse du groupe,
Se terminant par
Il ne nous reste plus qu'à spécifier le délimiteur de fin, la parenthèse fermante à échapper elle-aussi.
- Taper un antislash suivi d'une parenthèse fermante, soit : \),
- Fermer les guillemets de l'expression régulière et la parenthèse de la fonction,
- Enfin, valider la formule par la touche Entrée du clavier,

Comme vous pouvez l'apprécier, notre extraction est un franc succès. Nous isolons bien tout ce qui est placé entre les parenthèses, avec les parenthèses.
Capturer le groupe
Certes, il reste donc les parenthèses que nous aimerions éliminer. Pour cela, rien n'est plus simple avec le
troisième paramètre de la
fonction RegEx.Extraire.

Il se nomme
return_mode. En le réglant sur la
valeur 2, nous pouvons capturer les groupes. En d'autres termes, nous pouvons limiter l'extraction à ce qui se trouve entre ces délimiteurs.
Ainsi en cellule E4, en adaptant la précédente syntaxe comme suit :
=REGEX.EXTRAIRE(D4:D14; "\(([^)]+)\)"; 2)
D'un seul jet, nous parvenons en effet à extraire tout ce qui est placé entre les parenthèses, sans les parenthèses.
Sachez aussi, dans notre cas spécifique, comme nous l'avons expliqué précédemment, que nous aurions pu bâtir une expression encore plus simple :
=REGEX.EXTRAIRE(D4:D14;"(\d+,\d+)").
Nous cherchons une succession de chiffres sur un nombre indéfini (\d+), avec une virgule au beau milieu et de nouveau une succession de plusieurs chiffres (\d+).
Extraire tout le reste
Maintenant pour isoler les personnes purgées des scores en troisième colonne, le plus dur est fait. Il suffit d'exploiter la
fonction de remplacement substitue pour remplacer dans chaque chaîne, toutes ces occurrences trouvées par des chaînes vides.
A partir de F4 :
=SUBSTITUE(D4;"(" & E4 &")";"")
Formule à répliquer bien sûr jusqu'en ligne 14.