Comment extraire des parties de texte avec les fonctions DROITE() - GAUCHE() - STXT() d'Excel
Aujourd’hui, je vous propose de découvrir comment extraire une partie d’une chaîne de caractères en utilisant les fonctions dédiées d’Excel.
Restez bien jusqu’au bout de cet article, nous y verrons notamment comment exploiter un numéro de sécurité sociale pour déterminer le sexe d’un individu ou encore comment récupérer le code postal ou la ville de résidence à l’intérieur d’une chaîne de caractères complexe.
En bonus, je vais également vous montrer comment extraire un texte jusqu’à l’espace.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Pour illustrer ce tutoriel, nous allons utiliser le tableau de présentation du personnel d’une entreprise :
Nous y retrouvons les informations suivantes :
- Le nom
- Le prénom
- L’adresse complète
- La date de naissance
- Le numéro de sécurité sociale
2. Extraire la partie gauche d’un texte
Pour commencer de manière assez simple la découverte des fonctions d’extraction des sous-chaînes de caractères, nous allons souhaiter obtenir le sexe de chacune des personnes de l’entreprise.
Et pour cela, nous allons pouvoir nous appuyer simplement sur leur numéro de sécurité sociale.
En effet, comme vous le savez certainement, le numéro de sécurité sociale français est composé d’une série de nombres qui correspondent aux informations personnelles :
- Le premier chiffre correspond au sexe de la personne,
- Les deux chiffres suivants à son année de naissance,
- Les deux chiffres suivants à son mois de naissance,
- Les deux chiffres suivants à son département de naissance,
- Les trois chiffres suivants au code de sa ville de naissance (le « code commune » officiel de l’INSEE),
- Les trois chiffres suivants à son numéro d’ordre de naissance dans la commune pour son mois de naissance,
- En enfin les deux derniers chiffres correspondent à la clé de contrôle
Ici, ce qui va nous intéresser c’est d’analyser le tout premier caractère, lequel nous informera comme nous venons de le voir sur son sexe.
Pour extraire ce premier caractère, nous allons pouvoir utiliser la fonction GAUCHE(), qui permet comme son nom l’indique d’extraire une série de caractères situés au début d’un texte.
Nous commençons par insérer une nouvelle colonne dans le tableau en saisissant simplement le nom de celle-ci à droite du tableau :
Nous appelons alors la fonction GAUCHE() pour constater que celle-ci attend deux arguments :
=GAUCHE(texte;[no_car])
Où :
- Texte : correspond au texte dans lequel nous souhaitons effectuer l’extraction,
- No_car : correspond au nombre de caractères à extraire. Il s’agit d’un argument facultatif, dont la valeur par défaut est d’un caractère.
Pour récupérer le premier caractère situé à gauche au sein de la cellule Numéro de sécurité sociale, nous saisissons alors la fonction :
=GAUCHE(E10;1)
En outre, étant donné qu’ici nous ne souhaitons extraire qu’un seul caractère, nous pouvons utiliser la valeur par défaut de l’argument no_car, en omettant de saisir la valeur « 1 » :
=GAUCHE(E10)
Le résultat sera alors strictement identique :
Maintenant que nous connaissons le code correspondant, nous allons pouvoir afficher directement le sexe des personnes en utilisant la fonction SI() que nous avons découverte il y a peu de temps, et qui permet d’effectuer un test logique afin de retourner une valeur donnée si le test renvoie la valeur VRAI, ou une autre valeur si celui-ci renvoie FAUX.
Ici nous allons donc regarder si le code est égal à « 1 », ce qui signifiera alors que la personne est un homme. Il s’agira d’une femme dans le cas contraire :
=SI(GAUCHE(E10)="1";"Homme";"Femme")
Attention, dans ce cas-là, le résultat retourné l’est sous la forme d’un texte, il faut donc saisir le nombre « 1 » entre guillemets.
Maintenant, nous pouvons étendre la formule sur toutes les cellules de la colonne en double cliquant sur la poignée de recopie (le petit carré noir situé en bas à droite de la cellule) :
3. Extraire la partie droite d’un texte
Maintenant que nous avons comment extraire la partie d’un gauche d’un texte en utilisant la fonction GAUCHE(), voyons comment extraire la partie située sur la droite en utilisant la fonction… DROITE() !
Celle-ci fonctionne exactement de la même manière :
=DROITE(texte;no_car)
Où :
- Texte : correspond au texte dans lequel nous souhaitons effectuer l’extraction,
- No_car : correspond au nombre de caractères à extraire. Il s’agit d’un argument facultatif, dont la valeur par défaut est d’un caractère.
Ici, nous allons souhaiter récupérer le code postal de résidence des personnes, en utilisant la colonne « Adresse » :
Comme vous pouvez le constater, celui-ci se trouve tout à droite des cellules, sur cinq caractères :
=DROITE(C10;5)
Alors attention, dans les exemples que nous venons de voir, l’extraction des données est simple car nous connaissons déjà le nombre de caractères à extraire.
Bien entendu, cela ne sera pas toujours le cas.
En effet, maintenant, imaginons que nous souhaitions extraire la ville et le code postal.
Pour cela, nous allons devoir identifier un caractère donné, dont nous allons compter la position avec la fonction TROUVE().
Ici, nous allons pouvoir nous servir du tiret central :
=TROUVE("-";C10)
Cette formule nous permet ici d’obtenir la position du tiret, or ce que nous souhaitons déterminer, c’est le nombre de caractères situés à droite de celui-ci. Pour cela, nous allons simplement effectuer une soustraction du nombre de caractères total, diminués de cette position :
=NBCAR(C10)-TROUVE("-";C10)-1
Nous n’oublions pas de retirer un caractère afin de ne pas considérer l’espace situé juste après le tiret :
Nous souhaitons donc extraire les 13 derniers caractères de la cellule.
Il ne reste plus qu’à encapsuler ce résultat en tant qu’argument de la fonction DROITE() :
=DROITE(C10;NBCAR(C10)-TROUVE("-";C10)-1)
4. Extraire une partie située au centre d’un texte
Pour récupérer une partie qui ne se trouve pas directement sur la gauche ou sur la droite d’un texte, nous avons deux possibilités à notre disposition.
Nous pouvons tout d’abord encapsuler la fonction GAUCHE() en tant qu’argument de la fonction DROITE() (ou inversement).
Si nous reprenons le dernier exemple, nous avons pu récupérer la partie droite de l’adresse avec la fonction DROITE().
Si nous utilisons la fonction GAUCHE() sur ce résultat, alors nous récupérerons la ville sans le code postal, comme souhaité :
=GAUCHE(H10;NBCAR(H10)-6)
L’autre solution, si nous souhaitons effectuer l’extraction directement, sans passer par l’utilisation de deux fonctions est d’utiliser l’unique fonction STXT() :
=STXT(texte;no_départ;no_car)
Où :
- Texte : correspond au texte dans lequel nous souhaitons effectuer l’extraction,
- No_départ : correspond à la position de la première lettre à extraire
- No_car : correspond au nombre de caractères à extraire
=STXT(C10;TROUVE("-";C10)+2;NBCAR(C10)-TROUVE("-";C10)-1-6)
Nous nous inspirons ici fortement des formules précédentes :
- La position du premier caractère à extraire est obtenue en prenant la position du tiret, puis en nous plaçant deux caractères plus loin (pour tenir compte de l’espace)
- Et le nombre de caractères à extraire correspond au nombre de caractères totaux, duquel nous retirons le nombre de caractères situés à gauche du tiret, moins un caractère encore pour l’espace suivant, et moins six caractères pour le code postal et l’espace situé juste avant
5. Les fonctions GAUCHEB() et DROITEB()
Pour finir, sachez que les fonctions GAUCHE() et DROITE() disposent de variantes, les fonctions GAUCHEB() et DROITEB() qui permettent, dans lesquels nous spécifions la taille des données à extraire non pas en caractère comme nous venons de le voir, mais en octets.