Récupérer une sous-chaîne de caractères dans un tableur
Fonctions de base
Les fonctions STXT, GAUCHE, DROITE, SUBSTITUE peuvent convenir selon le besoin.
STXT
Cette fonction permet d’extraire une sous-chaîne d’un texte. Les paramètres indiquent le point de départ et le nombre de caractères.
Syntaxe
STXT(cellule;début;nombre)
- Cellule est l’adresse de la cellule contenant le texte dans lequel on veut extraire une chaîne ;
- début est la position du premier caractère dans le texte à extraire ;
- nombre spécifie le nombre de caractères à extraire.
Exemple
=STXT(C3;2;3)
vaut « arc » si C3 contient « marcher ».
GAUCHE
Cette fonction récupère les premiers caractères d’un texte.
Syntaxe
GAUCHE(cellule;nombre)
- Cellule est l’adresse de la cellule contenant le texte ;
- nombre (facultatif) indique le nombre de caractères du texte extrait. Si ce paramètre n’est pas défini, un seul caractère est renvoyé.
Exemple
=GAUCHE(D2;3)
vaut « Bon » si D2 contient « Bonjour ».
DROITE
Cette fonction permet d’extraire les derniers caractères d’un texte.
Syntaxe
DROITE(cellule;nombre)
- Cellule est l’adresse de la cellule contenant le texte ;
- nombre (facultatif) est le nombre de caractères de la partie à droite du texte. Si ce paramètre n’est pas défini, un seul caractère est renvoyé.
Exemple
=DROITE(D2;4)
vaut « jour » si D2 contient « Bonjour ».
SUBSTITUE
Remplace l’ancien texte par le nouveau texte dans une chaîne.
Syntaxe
SUBSTITUE("Texte";"Texte_cherché";"Nouveau_texte";occurrence)
- Texte est le texte dans lequel le segment de texte doit être échangé.
- Texte_cherché est le segment de texte qui doit être remplacé (un certain nombre de fois).
- Nouveau_texte est le texte qui doit remplacer le segment de texte.
- occurrence (facultatif) indique quelle occurrence du texte recherché doit être remplacée. Si ce paramètre est manquant, le texte recherché est remplacé partout.
Exemples
=SUBSTITUE("123123123";"3";"abc")
renvoie 12abc12abc12abc.
=SUBSTITUE("123123123";"3";"abc";2)
renvoie 12312abc123.
Chaîne de longueur variable
On a parfois besoin d’extraire le début d’une chaîne de caractères de longueur variable, mais où la chaîne à supprimer est de longueur constante.
Par exemple on a une liste d’adresses courriels de même domaine et on veut ne garder que la partie qui précède le @.
Exemple
=GAUCHE(B2;NBCAR(B2)-12)
vaut « prenom.nom » si B2 contient « prenom.nom@monmail.com », la chaîne « @monmail.com » ayant 12 caractères.
Pour cet exemple, on aurait aussi pu utiliser la fonction SUBSTITUE si le domaine est toujours le même.
=SUBSTITUE(B2;"@monmail.com";"")
vaut « prenom.nom » si B2 contient « prenom.nom@monmail.com »
Découper grâce à un caractère séparateur
On peut avoir besoin de récupérer une sous-chaîne dans une chaîne où toutes les longueurs sont variables, mais où les différentes sous-chaînes sont séparées par un caractère constant.
Par exemple extraire des noms et prénoms dans des adresses courriels qui sont toutes de la forme prenom.nom@domaine.com.
Exemples
=GAUCHE(B2;CHERCHE("\.";B2;1)-1)
vaut « prenom » si B2 contient « prenom.nom@monmail.com ». En effet la fonction CHERCHE va trouver la position du caractère séparateur ici le point et il suffira de prendre tous les caractères avant cette position, d’où le -1. Le caractère . (point) est spécial et il faut le faire précéder du caractère \ (Alt Gr + 8 ) [EDIT du 12/10/2022 sous Ubuntu, mais pas sous Windows].
=GAUCHE(B2;CHERCHE("@";B2;1)-1)
vaut « prenom.nom » si B2 contient « prenom.nom@monmail.com ».
=STXT(B2;CHERCHE("\.";B2)+1;CHERCHE("@";B2)-CHERCHE("\.";B2)-1)
vaut « nom » si B2 contient « prenom.nom@monmail.com ».
Sources
- https://help.libreoffice.org/4.2/Calc/Text_Functions/fr
- https://forums.commentcamarche.net/forum/affich-35758522-extraire-le-texte-de-cellules-a-partir-d-un-caractere-sur-calc
- https://forum.openoffice.org/fr/forum/viewtopic.php?f=4&t=18605