9. Exercice - Fonctions de Texte
Prérequis
Il convient de lire le cours Fonctions Excel jusqu'au chapitre Fonctions de Texte avant d'entamer cet exercice.
Question
Soit l’extrait de feuille de calcul suivant où est inscrit en colonne A des "prénoms noms".
Les prénoms et noms sont écrits séparés par un caractère espace. Les prénoms composés sont unis par un tiret et non pas séparés par un espace.
Ecrivez les formules appropriées permettant d'avoir en colonne B les "prénoms" et en colonne C les "noms".
NB. Ce problème peut bien être résolu à l'aide de l'Asistant Conversion d'Excel. Vous pouvez appeler cet assistant à l'aide de la commande Convertir de l'onglet Données du ruban. Pourtant, je vous demande de le résoudre à l'aide de formules ; c'est un très bon exemple d'utilisation de fonctions de texte d'Excel.
Indications Exercice – Fonctions de Texte
1 - Formule en cellule B2 pour extraire les prénoms ?
Solution :
=STXT(A2;1;TROUVE(" ";A2)-1)
Explications :
Le prénom est une partie du texte en cellule A2, j'utilise donc la la fonction Excel STXT permettant d'extraire une partie d'une chaîne de caractères.
Je donne en 1er argument cette chaîne de caractères, donc l'adresse de la cellule A2.
En 2ème argument, c'est 1, puisque le prénom est écrit en début de la valeur à la cellule A2; à partir du 1er caractère. Soit :
=STXT(A2;1;----------)
En 3ème argument, c'est le nombre de caractères du prénom. A la ligne 2, c'est 10. Mais, n'oublions pas que nous allons faire une copie incrémentée pour remplir les cellules de la colonne B et le nombre de caractères du prénom varie d'une ligne à l'autre.
La solution est de se référer à la position du caractère espace à la chaîne de caractères de la cellule A2. C'est la fonction Excel TROUVE qui retourne la position d'un caractère dans un texte. Donc, la formule pour retrouver la position du caractère espace est:
TROUVE(" ";A2)
Pour le nombre de caractères du prénom, je dois retrancher 1 pour ne pas compter le caractère espace. soit :
TROUVE(" ";A2)-1
La formule globale en B2 est :
=STXT(A2;1;TROUVE(" ";A2)-1)
NB. Nous avons ici un exemple d'appel imbriqué de fonctions; en effet, le résultat de la fonction TROUVE est donné comme argument pour l'appel de la fonction STXT. Nous pouvons éviter cet appel imbriqué de la manière suivante :
En cellule D2 par exemple, écrivez la formule :
=TROUVE(" ";A2)
Si vous voulez montrer l'objet de la colonne D, entrez comme entête de colonne en cellule D1 : Position du caractère espace.
Vous pouvez écrire en B2 alors la formule :
=STXT(A2;1;D2-1)
2 - Formule en cellule C2 pour extraire les noms ?
Solution :
=STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2)-TROUVE(" ";A2))
Explications :
Nous utilisons encore la fonction STXT pour extraire une partie d'une chaîne de caractères.
En 2ème argument c'est :
TROUVE(" ";A2)+1
Il s'agit de la position après (d'où le +1) le caractère espace, puisque le nom est écrit en cellule A2 après le caractère espace.
En ce qui concerne le 3ème argument, ça doit être le nombre de caractères du nom. Mais, je rappele que pour la fonction STXT, lorsqu'il faut extraire les caractères se trouvant à la fin de la chaîne, il est possible de donner un nombre plus grand en 3ème argument et Excel retournera les caractères restant, c'est à dire jusqu'à la fin de la chaîne de caractères en A2. Je donne par exemple 100, puisqu'aucun nom n'a plus de 100 caractères.
Nous pouvons donc écrire en C2 la formule :
=STXT(A2;TROUVE(" ";A2)+1;100)
Par contre, il est possible de calculer exactement le nombre de caractères du nom. Pour cela, il faut avoir recours à la fonction NBCAR qui retourne le nombre de caractères d'une chaîne de caractères. Le nombre de caractères du nom est :
NBCAR(A2)-TROUVE(" ";A2)
J'ai retranché le nombre de caractères jusqu'au caractère espace, du nombre de caractères du texte en A2.
d'où la formule en C2 :
=STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2)-TROUVE(" ";A2))
NB. Pour éviter d'avoir des appels imbriqués de fonction, vous pouvez également utiliser des formules dans des cellules intermédiaires. Dans le cas de l'extrait ci-dessous, la formule en D2 est :
=TROUVE(" ";A2)
La formule en E2 est :
=NBCAR(A2)-TROUVE(" ";A2)
La formule en C2 est :
=STXT(A2;D2+1;E2)