formateur informatique

Isoler les mots des textes en fonction de leurs positions

Accueil  >  Bureautique  >  Excel  >  Excel Astuces  >  Isoler les mots des textes en fonction de leurs positions
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Isoler un mot selon sa position

Avec l'astuce précédente, nous avons appris à extraire seulement les N derniers mots des chaînes de caractères. Avec cette nouvelle astuce Excel, toujours dans le même ordre d'idée, nous allons voir comment isoler un mot en fonction de sa position dans la chaîne.

Prélever un mot dans un texte en fonction de sa position par calcul Excel

Dans l'exemple finalisé illustré par la capture, l'utilisateur choisit une position à l'aide d'une liste déroulante placée sur la droite du tableau. Et aussitôt, pour chaque titre renseigné en première colonne de ce tableau, c'est le mot situé à la position définie qui est isolé et extrait en seconde colonne.



Classeur source
Pour la démonstration de cette nouvelle astuce Excel, nous proposons d'élaborer l'étude à partir d'un classeur offrant ce tableau de titres et cette liste déroulante. Nous découvrons donc le tableau de deux colonnes. Les titres sont inscrits en première rangée tandis que les extractions des mots isolés sont attendues en seconde rangée. Enfin, la liste déroulante pour choisir une position d'extraction est placée en cellule E4.

Espacer les mots dans les textes
Pour bien comprendre l'originalité de cette solution, nous proposons de décomposer le calcul en plusieurs étapes. La première idée consiste à séparer chaque mot d'un autre par un nombre d'espaces aussi important que le nombre de caractères que contient la chaîne. C'est ainsi que nous pourrons plus facilement nous placer entre deux mots, de façon approximative, pour isoler celui qui suit. Nous devons donc remplacer chaque espace par autant d'espace que la chaîne compte de caractères. Pour cela, nous pouvons exploiter la fonction de répétition Rept que nous avions découverte à l'occasion de l'astuce pour équilibrer les codes caractères en longueur.
  • Cliquer sur la case du premier mot à isoler, soit la cellule C4,
  • Taper le symbole égal (=) pour initier la syntaxe de la formule,
  • Inscrire la fonction de remplacement suivie d'une parenthèse, soit : Substitue(,
  • Désigner le texte à transformer en cliquant sur la cellule B4 du premier titre,
  • Taper un point-virgule (;) pour passer dans l'argument du texte à remplacer,
  • Inscrire un espace entre guillemets, soit : " ",
  • Puis, taper un point-virgule (;) pour passer dans l'argument du texte de remplacement,
C'est là que la première astuce doit entrer en jeux. Nous devons remplacer chaque espace par un nombre d'espaces égal au nombre total de caractères dans la chaîne. Nous devons donc répéter (Fonction Rept) ce caractère sur la longueur totale (Fonction NbCar).
  • Inscrire la fonction de répétition suivie d'une parenthèse, soit : Rept(,
  • Taper l'espace à répéter entre guillemets, soit : " ",
  • Taper un point-virgule (;) pour passer dans l'argument du nombre de répétitions,
  • Inscrire la fonction comptant les caractères, suivie d'une parenthèse, soit : NbCar(,
  • Désigner de nouveau le premier titre en cliquant sur sa cellule B4,
  • Fermer la parenthèse de la fonction NbCar,
  • Fermer la parenthèse de la fonction Rept,
  • Fermer la parenthèse de la fonction Substitue,
  • Puis, valider la formule par le raccourci clavier CTRL + Entrée,
Ainsi, nous la gardons active pour l'exploiter dans l'enchaînement.
  • Double cliquer sur la poignée du résultat pour propager la logique sur tout le tableau,
Espacer chaque mot des cellules Excel avec de nombreux espaces

Comme vous pouvez le voir, nous récoltons en effet des nuages de mots espacés au gré des nombres de caractères contenus dans chaque chaîne.



Isoler le mot selon sa position
Nous devons maintenant exploiter ce précédent résultat. Nous l'avons dit, la technique consiste à se placer approximativement devant le mot, soit dans les espaces qui précédent. Puis, elle doit permettre de prélever au-delà du mot, soit avec des espaces qui suivent le terme à isoler.
  • Sélectionner de nouveau la cellule du premier résultat, soit : C4,
  • Dans la barre de formule, cliquer après le symbole égal (=) pour y placer le point d'insertion,
  • Inscrire la fonction de découpe suivie d'une parenthèse, soit : Stxt(,
De cette manière, le texte transformé à partir duquel nous devons isoler un mot est déjà passé en premier paramètre.
  • Cliquer à la toute fin de la syntaxe pour y placer le point d'insertion,
  • Puis, taper un point-virgule (;) pour passer dans l'argument de la position de départ,
Celle-ci est forcément fonction du numéro choisi par l'utilisateur par le biais de la liste déroulante mais aussi des nombreux espaces que nous avons intercalés entre les mots.
  • Ouvrir une parenthèse pour la factorisation du calcul,
  • Désigner la position définie en cliquant sur la cellule E4,
  • Enfoncer la touche F4 du clavier pour la figer, ce qui donne : $E$4,
En effet, il s'agit d'un indicateur de référence qui doit être utilisé pour tous les noms. Donc sa cellule ne doit pas bouger lorsque la formule sera répliquée sur les lignes du dessous.
  • Retrancher une unité à ce résultat, soit : -1,
Il s'agit d'une logique implacable. Pour extraire le troisième mot par exemple, le prélèvement doit commencer avant (3-1).
  • Dès lors, fermer la parenthèse de la factorisation,
  • Puis, multiplier ce score par le nombre de caractères de la chaîne, soit : *NbCar(B4),
Là encore, la logique s'impose. Pour rester sur l'exemple du troisième mot, nous savons que celui-ci est nécessairement précédé de deux jeux d'espaces de même longueur que la chaîne, sans compter la longueur des deux mots placés avant lui. Grâce à cette multiplication, nous plaçons donc le curseur entre le deuxième et le troisième mots, mais sans savoir où précisément.
  • Ensuite, ajouter une unité à ce résultat, soit : +1,
Cette fois, il s'agit d'une sécurité. Imaginons que l'utilisateur choisisse d'isoler les mots situés en première position. Le calcul ($E$4-1)*NbCar(B4), soit (1-1)*NbCar(B4) retournerait zéro. Cette position de départ n'existe pas et la fonction Stxt retournerait une erreur.
  • Taper un nouveau point-virgule (;) pour passer dans l'argument de la longueur de découpe,
Etant donnée la position approximative dans les espaces, nous devons prévoir large. La meilleure solution est de choisir une longueur équivalente à celle de la chaîne. Ainsi, nous sommes sûrs d'englober le mot à isoler sans déborder sur le suivant, étant donnée la quantité équivalente d'espaces qui suivent.
  • Inscrire la fonction comptant les caractères, suivie d'une parenthèse, soit : NbCar(,
  • Désigner de nouveau le premier titre en cliquant sur sa cellule B4,
  • Fermer la parenthèse de la fonction NbCar,
  • Fermer la parenthèse de la fonction Stxt,
  • Puis, valider la formule par le raccourci clavier CTRL + Entrée,
  • Dès lors, double cliquer sur la poignée du résultat pour répandre la logique du calcul,
Extraire des mots des cellules Excel en fonction de leurs positions

Comme vous pouvez le voir, nous obtenons bien l'extraction du mot de chaque titre en fonction de la position demandée par l'utilisateur. Et si vous changez de position avec la liste déroulantes, ce sont d'autres mots qui sont isolés.



Supprimer les espaces avant et après
Mais à ce stade, la présentation des résultats n'est pas satisfaisante. Les espaces résiduels que nous avons greffés entre les mots en sont la cause. C'est une quantité variable qui s'est glissée avant et après le mot isolé. Mais Excel regorge de surprises. Il offre une fonction intéressante bien qu'inhabituelle. Elle se nomme SupprEspace. Elle permet tout simplement d'éliminer tous les espaces en préfixe comme en suffixe sans altérer ceux qui sont placés entre les mots.
  • Sélectionner de nouveau le premier résultat en cliquant sur sa cellule C4,
  • Dans la barre de formule, adapter la syntaxe comme suit :
=SUPPRESPACE(STXT(SUBSTITUE(B4; " "; REPT(" "; NBCAR(B4))); ($E$4-1)*NBCAR(B4)+1; NBCAR(B4)))

Après validation et réplication, vous constatez que tous les mots restent bien isolés et sont cette fois parfaitement alignés.

Isoler des mots des chaînes de textes Excel selon leurs positions dans la phrase

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn