Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Traitements des chaînes de texte par formules Excel
Dans une formation décomposée en deux volets, nous proposons de concentrer nos travaux sur les
fonctions que propose
Excel pour traiter les chaînes de caractères et plus spécifiquement, les cellules contenant du texte. Dans ce premier volet, nous allons présenter certaines d'entre elles pour constater leur incidence sur les données textuelles qu'elles traitent. Dans un deuxième volet, forts de ces constatations, nous imbriquerons ces fonctions de texte afin de produire de puissantes extractions sur des bases de données, à partir d'interrogations formulées sur des fragments de textes ou de phrases, comme le font les moteurs de recherche.
Comme l'illustre la capture ci-dessus, à l'issue, nous souhaitons imbriquer certaines fonctions pour être en mesure de séparer des fragments de textes dynamiquement. Ici, l'objectif sera d'être capable de restituer seulement le prénom d'un salarié en fonction de son nom complet, soit l'association de son nom et de son prénom. Comme le nombre de lettres composant un nom varie dans chaque cas, il n'y a pas de règle stricte permettant de définir la position de départ pour la découpe de l'information.
Source et présentation des objectifs
L'autre résultat que nous proposons d'atteindre au travers de l'exploitation des ces fonctions, est l'extraction des informations complémentaires d'un salarié sur la base d'une saisie incomplète. Il ne sera donc plus nécessaire comme nous l'avions fait dans les formations précédentes notamment, de
recouper les données en amont pour extraire les résultats correspondants. Seuls des indices sur des fragments de chaînes suffiront. Et pour cela nous avons besoin de manipuler des données que nous proposons de récupérer.
Ce classeur est constitué de deux feuilles. La
feuille Salariés concerne le développement final qui consistera à fournir une bribe d'indication textuelle en F4 pour restituer tous les résultats correspondants dans les cellules du dessous, en fonction des données du tableau construit entre les colonnes B et C. Vous remarquez à ce titre que ce tableau se contente de recenser les salariés par l'assemblage de leur prénom et nom, dans les deux sens.
- Cliquer sur l'onglet Découper en bas de la fenêtre Excel pour activer sa feuille,
Nous basculons sur le tableau illustré par la capture ci-dessus sauf qu'il ne propose encore aucun résultat, puisque les fonctions de texte sont à mettre en oeuvre.
Fonctions de découpe de chaînes de caractères
Excel met à disposition un grand nombre de
fonctions permettant de traiter l'information textuelle. Parmi elles, certaines permettent de découper une chaîne sur une longueur donnée. Nous proposons de les présenter sous leur forme la plus simple dans un premier temps. Une fois domestiquées, ces fonctions pourront être imbriquées pour produire des résultats dynamiques s'adaptant aux données proposées par les tableaux Excel.
- Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
- Puis, dans la section Bibliothèque de fonctions du ruban, cliquer sur le bouton Texte,
Vous déroulez ainsi la liste des
fonctions que propose
Excel pour traiter les
informations textuelles contenues dans les cellules. Lorsque vous pointez sur l'une d'entre elles, une info-bulle apparaît. Elle offre un descriptif de sa finalité et propose sa construction avec les arguments qui lui sont nécessaires. Il est ainsi relativement simple de les exploiter sans même les connaître. La
fonction Joindre.Texte par exemple, permet de concaténer autant de cellules de texte que souhaitées. L'avantage qu'elle procure par rapport à l'utilisation du Et Commercial (&) dans la formule de concaténation, est de lui fournir une fois seulement le délimiteur, l'espace en l'occurrence permettant d'espacer chaque information textuelle assemblée.
Vous notez aussi par exemple, la présence des
fonctions Majuscule et Minuscule. Comme leur nom l'indique, elles permettent de modifier la casse des textes désignés en argument. Mais, comme il s'agit de calculs, ce changement de casse s'opère dans la cellule du résultat et non en lieu et place, comme nous l'avait proposé la
formation VBA Excel pour changer la casse des cellules grâce à des boutons.
Les fonctions qui attirent notre attention dans un premier temps, sont celles qui permettent de découper l'information, selon des arguments à définir. Il y a par exemple les
fonctions Gauche,
Droite et
Stxt. La première permet de prélever un morceau de texte à partir du début (Gauche), sur une longueur à définir. La deuxième permet de prélever un bout de la chaîne, en partant de la fin (Droite), sur une longueur à déterminer. La dernière enfin, permet de prélever une partie d'un texte à partir d'une position à définir sur une longueur à déterminer. Voyons cela par l'exemple :
- Sélectionner la cellule E3 de la feuille Découper,
- Taper le symbole = pour débuter le calcul,
- Saisir la fonction pour prélever à partir du début suivie d'une parenthèse, soit Gauche(,
- Sélectionner le premier nom comme information à prélever, soit la cellule B3,
- Taper un point-virgule (;) pour passer dans l'argument de la longueur de découpe,
- Saisir le chiffre 5 par exemple, afin de ne prélever que cinq caractères,
- Fermer la parenthèse de la fonction Gauche,
- Valider le calcul par le raccourci clavier CTRL + Entrée,
En retour nous obtenons le texte Doeuf, soit seulement le nom du salarié désigné en B3. Il s'agit d'une extraction textuelle sur une longueur fixe définie arbitrairement sur 5 caractères. C'est pourquoi, elle ne s'adaptera pas comme par magie, afin de déceler l'emplacement de séparation pour les autres salariés.
- Double cliquer sur la poignée de la cellule E3 pour répliquer le calcul,
En effet, la découpe ainsi définie n'est pas satisfaisante pour le deuxième salarié par exemple. Son nom est tronqué puisqu'il compte 6 caractères à l'origine. Mais le principe à ce stade est de découvrir ces fonctions et leur mode opératoire. L'objectif au final sera de les imbriquer pour produire des découpes intelligentes. Le deuxième argument de la
fonction Gauche est facultatif. Si la longueur n'est pas définie, le texte est prélevé à partir du début sur une longueur de 1 caractère. Il en résulte simplement la première lettre du texte. Il en va de même pour la fonction Droite. A l'inverse, seul le dernier caractère de la chaîne serait prélevé.
- En E3, remplacer le précédent calcul par la formule suivante :
=DROITE(B3;5)
- Une fois validé, le reproduire par double clic sur sa poignée,
L'extraction se produit bien par la fin de la chaîne cette fois-ci, toujours sur une longueur fixe de 5 lettres. Il en résulte des prélèvements aléatoires, dépendant de la longueur de la chaîne dans la cellule désignée.
Penchons-nous maintenant sur la dernière fonction d'extraction évoquée, la
fonction Excel Stxt. Elle offre la souplesse de permettre la découpe des caractères depuis le milieu de la chaîne. En conséquence, elle requiert plus d'arguments comme la position de départ et la longueur.
- Supprimer les calculs précédents sur la plage de cellules E3:E5,
- Puis sélectionner la cellule E3 et taper le symbole = pour débuter la formule,
- Saisir la fonction pour prélever du milieu suivie d'une parenthèse, soit Stxt(,
- Désigner la cellule contenant le texte à prélever, soit B3,
- Taper un point-virgule (;) pour passer dans l'argument de la position de départ,
- Saisir le chiffre 5 par exemple,
- Puis taper un nouveau point-virgule pour passer dans l'argument de la longueur,
- Saisir le chiffre 4, fermer la parenthèse et valider le calcul,
- Double cliquer sur la poignée de la cellule pour répliquer la formule sur les autres cellules,
Comme l'illustre la capture ci-dessous, nous sommes bien parvenus à récupérer un bout de texte, à partir d'une position donnée et sur une longueur définie. Mais comme ces deux paramètres ont été transmis de façon statique, cette extraction n'a pas d'intérêt et pas de sens. Nous commençons néanmoins à comprendre que si nous sommes capables de les faire varier, en décelant par exemple la position variable de l'espace, que nous pourrions produire des extractions pertinentes et utiles.
Quoiqu'il en soit, la formule que nous avons construite pour cette extraction, est la suivante :
=STXT(B3;5;4)
contrairement aux deux précédentes fonctions, tous les paramètres de la
fonction Stxt sont obligatoires.
Informations dynamiques de position et de longueur
Pour les besoins de l'objectif à atteindre, nous devons désormais nous pencher sur les
fonctions Excel retournant des
informations dynamiques, directement exploitables pour les extractions. Si nous sommes capables de connaître la position de l'espace dans une chaîne, nous pouvons définir la position variable de départ et la fournir à la
fonction Stxt. Si nous sommes capables de connaître la taille d'un texte par calcul, nous sommes capables de lui fournir la longueur de prélèvement. Les fonctions Excel respectives se nomment
Cherche et
NbCar. La première retourne la position numérique d'une occurrence cherchée dans un texte. La seconde renvoie le nombre de caractères contenus dans la chaîne. Leurs syntaxes sont les suivantes :
=Cherche(Texte_cherché ; Chaîne_de_recherche ; [Position_départ])
=NbCar(Cellule_de_texte)
- Sélectionner la cellule C3 de la feuille Découper,
- Taper le symbole = pour débuter le calcul,
- Saisir la fonction pour la recherche d'une occurrence suivie d'une parenthèse, soit Cherche(,
- Taper un espace entre guillemets, soit ' ' pour désigner l'information cherchée,
- Taper un point-virgule (;) pour passer dans l'argument de la chaîne,
- Sélectionner le premier salarié, soit la cellule B3,
- Fermer la parenthèse de la fonction Cherche et valider la formule par CTRL + Entrée,
Le résultat obtenu est le chiffre 6 indiquant ainsi la position de l'espace. Le nom Doeuf est en effet composé de 5 lettres, donc l'espace intervient bien en 6
ème position. Nous exploiterons ce résultat en connaissance de cause. Nous n'avons pas renseigné le troisième argument facultatif. La position de départ, si elle n'est pas indiquée, est le début du texte.
- Double cliquer sur la poignée du calcul pour le répliquer sur les deux cellules du dessous,
- Sélectionner la cellule D3 et taper le symbole = pour débuter le calcul,
- Saisir le nom de la fonction pour compter les caractères suivi d'une parenthèse, soit NbCar(,
- Sélectionner le premier salarié, soit la cellule B3,
- Fermer la parenthèse de la fonction NbCar,
- Valider le calcul par CTRL + Entrée,
- Puis double cliquer sur la poignée de la cellule pour le répliquer,
Comme l'illustre la capture ci-dessus, ces deux calculs intermédiaires ont permis de récolter les informations variables à transmettre à la
fonction Excel Stxt, afin de découper la chaîne sur l'espace.
Extraire une information d'un texte
L'objectif désormais, consiste à pouvoir isoler le prénom du salarié dans la colonne E, à l'aide d'un seul calcul aux arguments dynamiques.
- Supprimer les précédents résultats sur la plage E3:E5, puis sélectionner la cellule E3,
- Taper le symbole = pour débuter le calcul,
- Saisir la fonction pour prélever le texte dans la chaîne suivie d'une parenthèse, soit Stxt(,
- Désigner le premier salarié, soit la cellule B3,
- Taper un point-virgule (;) pour passer dans l'argument de la position de départ,
- Sélectionner le résultat sur la recherche de l'espace, soit la cellule C3,
- Taper le symbole + suivi du chiffre 1 pour débuter après l'espace, soit C3+1,
- Taper un point-virgule pour passer dans l'argument de la longueur à prélever,
- Sélectionner la cellule du nombre de caractères trouvés, soit D3,
- Taper le symbole moins (-) pour la soustraction,
- Sélectionner de nouveau le résultat de la position, ce qui donne : D3-C3,
- Fermer la parenthèse de la fonction Stxt et valider le calcul,
- Puis, double cliquer sur la poignée de la cellule pour le répliquer,
Pour ne pas inclure l'espace dans le prélèvement, nous avons incrémenté le résultat intermédiaire du calcul de position (C3 + 1). La longueur à prélever dépend du nombre de caractères restants à partir du point de départ. Il s'agit donc de la différence entre le nombre de caractères et la position calculée (D3-C3). Notez que si l'information donnée sur la longueur est trop importante, la
fonction Stxt s'adapte pour prélever jusqu'à la fin du texte sans générer d'erreur. Après réplication, vous constatez que l'extraction s'est produite avec succès, ne conservant que les prénoms des salariés. Nous avons donc réussi à créer une formule dynamique, pour découper le texte sur des positions et longueurs variables.
La formule que nous avons bâtie est la suivante :
=STXT(B3;C3+1;D3-C3)
Pour bien comprendre le fonctionnement des différentes fonctions intervenant dans le résultat, nous avons décomposé le calcul. Mais nous aurions très bien pu les imbriquer afin de ne produire qu'une seule formule, comme suit :
=STXT(B3;CHERCHE('';B3) + 1;NBCAR(B3) - CHERCHE(' ';B3))
Le cas que nous venons de traiter proposait un contexte idéal. Le tableau situé juste en dessous inverse les positions du prénom et du nom. Cette fois, si nous nous contentons de repérer la position de l'espace, la découpe sera insuffisante dans certaines situations. Le deuxième salarié possède un prénom composé. La
fonction Cherche renvoie la position de la première occurrence trouvée. Et donc l'extraction dynamique sur cette base conduirait seulement à la première partie du prénom, soit Jean. Mais le troisième argument facultatif de la
fonction Cherche permet de réaliser la recherche à partir d'une position déterminée, par exemple celle du dernier espace trouvé.
C'est pourquoi nous proposons de décomposer le calcul en trois étapes. La première consiste à trouver la position du premier espace. La deuxième consiste à retourner la position de l'espace suivant, en partant de ce dernier emplacement. Le calcul final doit réaliser l'extraction complète du prénom, jusqu'au deuxième espace, s'il est trouvé.
- En cellule C9, saisir le calcul suivant :
=CHERCHE('';B9)
- Puis, le répliquer sur les deux cellules du dessous à l'aide de la poignée,
Rien de nouveau pour l'instant, nous posons simplement le résultat sur la recherche de la première occurrence de l'espace. Il s'agit maintenant de trouver le suivant, s'il existe. La recherche doit donc débuter après la précédente position trouvée, soit C9 + 1. Cependant, si plus aucun espace n'est présent, la
fonction Cherche génère une erreur. Nous devons donc imbriquer le calcul dans la
fonction SiErreur pour gérer cette éventualité.
- En cellule D9, saisir la formule suivante :
=SIERREUR(CHERCHE(''; B9; C9+1); '')
- Puis, double cliquer sur la poignée de la cellule pour répliquer le calcul,
Nous recherchons toujours la position de l'espace (' ') dans la cellule du nom complet (B9) mais cette fois-ci, à partir de la dernière position trouvée (C9+1), grâce au troisième argument facultatif de la fonction Cherche. Nous nous assurons ainsi de ne pas retourner la même position que celle renvoyée par le calcul précédent. S'il ne s'agit pas d'un prénom composé, aucun autre espace ne sera trouvé. En conséquence, nous passons une chaîne vide à la fonction SiErreur ('') pour garder la cellule vide dans ce contexte.
Le calcul de l'extraction du prénom en E9 doit tenir compte de ces deux possibilités. Si la cellule D9 n'est pas vide, le prélèvement doit s'opérer jusqu'à la seconde position, sinon il doit se faire jusqu'à la première. Il s'agit donc d'imbriquer la
fonction Stxt dans une
fonction Excel conditionnelle Si.
- Sélectionner la cellule E9 et taper le symbole = pour débuter le calcul,
- Saisir le nom de la fonction conditionnelle suivi d'une parenthèse, soit SI(,
- Saisir le critère vérifiant que la seconde position n'est pas vide, soit D9<>'',
- Taper un point-virgule (;) pour passer dans la branche Alors de la fonction Si,
- Saisir le nom de la fonction d'extraction suivi d'une parenthèse, soit STXT(,
- Sélectionner la cellule du texte à découper, soit B9,
- Taper un point-virgule (;) pour passer dans l'argument de la position de départ,
- Saisir le chiffre 1 pour prélever à partir du premier caractère,
- Taper un point-virgule (;) pour passer dans l'argument de la longueur,
- Sélectionner la cellule de la seconde position, soit D9,
Ainsi, dans le cas où un deuxième espace est trouvé, nous prélevons la chaîne à partir du premier caractère jusqu'à la position de cette seconde occurrence.
- Fermer la parenthèse de la fonction Stxt,
- Taper un point-virgule (;) pour passer dans la branche Sinon de la fonction Si,
- Saisir de nouveau la fonction d'extraction de texte suivie d'une parenthèse, soit STXT(,
- Sélectionner de nouveau la cellule du texte à prélever, soit B9,
- Taper un point-virgule (;) pour passer dans l'argument de la position de départ,
- Saisir comme précédemment le chiffre 1 pour débuter depuis le premier caractère,
- Taper un point-virgule (;) pour passer dans l'argument de la longueur à prélever,
- Puis indiquer le résultat de la première position trouvée en sélectionnant la cellule C9,
Ainsi, dans le cas où il n'y a pas de second espace, le prélèvement du texte s'effectue jusqu'à la première position trouvée et renvoyée par la
fonction Cherche.
- Fermer la parenthèse de la fonction Stxt,
- Puis, fermer la parenthèse de la fonction Si,
- Valider le calcul par CTRL + Entrée,
- Enfin, double cliquer sur la poignée de la cellule pour répliquer la formule,
Comme l'illustre la capture ci-dessous, nous avons réussi à bâtir un calcul dynamique pour extraire l'information textuelle, selon le contexte.
Lorsque seul un espace est recensé, la chaîne est découpée jusqu'à sa position trouvée. Lorsqu'un second espace est trouvé, la découpe se prolonge jusqu'à cette nouvelle position. Dans les deux cas, nous avons bien réussi à extraire uniquement le prénom, même composé, de l'information complète initialement proposée.
Recherche sur des fragments de texte
Maintenant que les présentations sont faites, nous pouvons exploiter ces connaissances afin de réaliser des applications utiles pour l'entreprise. Dans ce premier volet, nous proposons de débuter simplement.
- Cliquer sur l'onglet Salariés en bas de la fenêtre Excel pour activer sa feuille,
L'utilisateur est invité à saisir un prénom en cellule F4. Des calculs d'extraction, doivent retourner le nom complet du ou des salariés trouvés dans la petite base de données, située entre les colonnes B et C, en fonction de ce fragment d'indication. Comme un prénom peut appartenir à plusieurs personnes, nous devons être en mesure de restituer tous les résultats, tant qu'ils existent.
Pour cela, nous devons bâtir un calcul intermédiaire de repérage, par un numéro incrémenté, comme nous l'avions fait dans la
formation Excel pour extraire tous les enregistrements d'une référence redondante. Pour ce faire :
- Sélectionner la cellule D5 située à côté de la base de données,
- Taper le symbole = pour débuter le calcul,
- Saisir le nom de la fonction de gestion d'erreur suivi d'une parenthèse, soit SiErreur(,
- Saisir le nom de la fonction conditionnelle suivi d'une parenthèse, soit Si(,
- Taper la fonction de recherche dans un texte suivi d'une parenthèse, soit CHERCHE(,
- Désigner la cellule F4 comme élément à chercher dans la chaîne de caractères,
- Enfoncer la touche F4 du clavier pour figer la cellule, ce qui donne : $F$4,
- Taper un point-virgule (;) pour passer dans l'argument du texte de recherche,
- Désigner la première cellule du nom complet, soit C5,
- Fermer la parenthèse de la fonction Cherche,
- Puis, taper l'inégalité suivante : >0 pour exprimer le critère à vérifier,
- Taper un point-virgule (;) pour passer dans la branche Alors de la fonction Si,
- Saisir la fonction retournant la plus grande valeur d'une plage suivie d'une parenthèse, soit MAX(,
- Sélectionner la cellule juste au-dessus dans la colonne du calcul, soit D4,
- Taper le symbole deux points (:) pour générer la plage D4:D4,
- Figer seulement la première référence des deux cellules, ce qui donne : $D$4:D4,
- A la suite, fermer la parenthèse de la fonction Max,
- Incrémenter le résultat statistique retourné d'une unité, ce qui donne : MAX($D$4:D4)+1,
- Taper un point-virgule (;) pour passer dans la branche Sinon de la fonction Si,
- Saisir deux guillemets ('') pour garder la cellule vide lorsque le texte n'est pas trouvé,
- Fermer la parenthèse de la fonction Si,
- Taper un point-virgule (;) pour passer dans l'argument de la gestion d'erreur de la fonction SiErreur,
- Saisir de nouveau deux guillemets ('') pour conserver la cellule vide en cas de souci,
- Fermer la parenthèse de la fonction Sierreur et valider le calcul par CTRL + Entrée,
- Double cliquer sur la poignée de la cellule pour répliquer le calcul sur la hauteur du tableau,
- En cellule F4, saisir le texte Jean et valider par Entrée,
Vous constatez l'apparition du numéro incrémenté en regard de chaque cellule contenant l'information textuelle recherchée, soit le prénom saisi en cellule F4. Nous exploiterons ces repérages sous forme de numéros pour produire l'extraction des résultats correspondants, sous le prénom. La formule que nous avons bâtie est la suivante :
=SIERREUR(SI(CHERCHE($F$4; C5) >0; MAX($D$4:D4) + 1; ''); '')
Dans la zone de critère de la fonction Si, nous cherchons à savoir si le prénom cherché est trouvé dans la cellule du tableau, située sur la même ligne. Si la fonction Cherche retourne une position (CHERCHE($F$4;C5)>0), le texte est trouvé et la condition est considérée comme vérifiée. Dans ce cas, nous incrémentons la plus grande valeur trouvée dans la colonne du calcul d'une unité (MAX($D$4:D4)+1). C'est la raison pour laquelle nous travaillons sur une plage de cellules dont seule la borne inférieure progresse, en même temps que le calcul est répliqué. Ainsi, nous repérons explicitement chaque résultat concordant d'un numéro unique, pour être certain de pouvoir les extraire tous indépendamment.
Pour extraire ces résultats, nous devons imbriquer les
fonctions de recherche Index et Equiv. La fonction Index permet de retourner l'information cherchée dans une base de données (C:D), en fonction de son indice de ligne et de son indice de colonne.
=Index(Tableau_de_recherche ; Indice_ligne ; Indice_colonne)
L'indice de colonne est connu. Il s'agit de la deuxième de la sélection du tableau entre C et D. L'indice de ligne est une variable qui peut être trouvée par la fonction Equiv, sur la recherche du numéro incrémenté, en colonne D :
=Equiv(Valeur_cherchée ; Colonne_de_recherche ; Booléen_de_correspondance)
Pour incrémenter cette valeur cherchée afin de restituer tous les résultats, nous exploiterons la
fonction Excel ligne, comme nous l'avions fait dans la
formation permettant de repérer tous les doublons. Et pour éviter les différences de casse, nous exploiterons la
fonction de texte Majuscule, afin de comparer la valeur cherchée dans la cellule de recherche, avec la même casse. Enfin, pour ne restituer que la partie manquante de l'information cherchée, nous proposons d'exploiter la
fonction Excel Substitue qui permet de remplacer une occurrence par une autre. Nous remplacerons ainsi le prénom cherché par une chaîne vide. En résultera le reste de la chaîne.
- Sélectionner la cellule F5 et taper le symbole = pour débuter le calcul,
- Taper le nom de la fonction de gestion d'erreur suivi d'une parenthèse, soit SiErreur(,
- Saisir la fonction de remplacement de texte suivie d'une parenthèse, soit Substitue(,
- Taper le nom de la fonction pour convertir en majuscules suivi d'une parenthèse, soit Majuscule(,
- Taper la fonction pour rechercher dans une base de données suivie d'une parenthèse, soit Index(,
- Désigner l'intégralité des deux colonnes par leurs étiquettes, pour un calcul dynamique, soit C:D,
- Taper un point-virgule (;) pour passer dans l'argument de l'indice de ligne de l'élément à extraire,
- Saisir la fonction retournant cet indice de ligne suivie d'une parenthèse, soit Equiv(,
- Taper la fonction retournant l'indice de ligne d'une cellule suivie d'une parenthèse, soit Ligne(,
- Sélectionner la cellule F1 pour commencer la recherche sur le numéro 1 et suivre l'incrémentation,
- Fermer la parenthèse de la fonction Ligne,
- Taper un point-virgule (;) pour passer dans l'argument de la colonne de recherche,
- Désigner la colonne D par son étiquette, soit D:D,
- Taper un point-virgule (;) suivi du chiffre 0 pour une recherche selon une correspondance exacte,
- Fermer la parenthèse de la fonction Equiv,
- Taper un point-virgule (;) pour passer dans l'argument de l'indice de colonne de la fonction Index,
- Saisir le chiffre 1 pour indiquer la première colonne de la sélection,
- Fermer la parenthèse de la fonction Index ainsi que la parenthèse de la fonction Majuscule,
- Taper un point-virgule (;) pour passer dans l'argument du texte à remplacer de la fonction Substitue,
- Désigner la cellule figée du prénom et convertie en majuscules, soit MAJUSCULE($F$4),
- Taper un point-virgule (;) pour passer dans l'argument du texte de remplacement,
- Saisir deux guillemets pour supprimer l'information recherchée, soit '',
- Fermer la parenthèse de la fonction Substitue,
- Taper un point-virgule (;) pour passer dans l'argument de la gestion d'erreur,
- Saisir deux guillemets ('') pour garder la cellule vide en cas de souci de recherche,
- Fermer la parenthèse de la fonction SiErreur,
- Valider le calcul par le raccourci CTRL + Entrée,
- Tirer la poignée de la cellule sur quelques lignes vers le bas afin de permettre l'extraction de tous les résultats concordants.
Le résultat obtenu est convaincant. En imbriquant plusieurs
fonctions Excel pour manipuler les chaînes de caractères, nous avons réussi à extraire tous les enregistrements correspondant au fragment de texte (le prénom), fourni en cellule F4.
Si vous tapez un autre prénom, comme Anne par exemple, son nom est instantanément retourné par la formule, malgré l'information fournie incomplète. C'est tout l'intérêt de ces
fonctions de texte que nous exploiterons dans le prochain volet afin de produire un petit moteur de recherche. Ce dernier permettra de trouver tous les enregistrements concordants, quel que soit le champ, à la recherche de l'information textuelle fournie. Il ne sera donc plus nécessaire de demander à l'utilisateur de formuler des critères précis pour faire correspondre la recherche sur des champs précis.
La formule que nous avons bâtie est la suivante :
=SIERREUR(SUBSTITUE(MAJUSCULE(INDEX(C:D; EQUIV(LIGNE(F1); D:D; 0); 1)); MAJUSCULE($F$4); ''); '')
Nous réalisons une extraction entre les colonnes C et D (INDEX(C:D). L'information se situe au croisement d'un indice de ligne et de colonne. La ligne est fournie par la
fonction Equiv, sur la recherche du numéro incrémenté résultant du calcul intermédiaire, dans la colonne D (EQUIV(LIGNE(F1);D:D;0)). La colonne est connue (1). Dans le résultat trouvé à cet emplacement, l'information cherchée (MAJUSCULE($F$4)) est supprimée grâce à la
fonction Excel Substitue, pour ne retourner que le texte manquant.