formateur informatique

Extraire une donnée selon sa position dans un texte

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Extraire une donnée selon sa position dans un texte
Livres à télécharger


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


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Extraire selon la position

En exploitant la fonction Fractionner.Texte dans d'autres fonctions, nous augmentons ses capacités.

Extraire une information dans une chaîne selon sa position, par formule Excel

Sur l'exemple illustré par la capture, nous travaillons à partir d'une liste de chaînes de textes. Il s'agit d'informations sur des personnes. Chaque donnée est séparée d'une autre par un espace. Sur la droite, l'utilisateur choisit l'information qu'il souhaite isoler, à l'aide d'une liste déroulante. En-dessous et instantanément, la donnée convoitée est extirpée de chaque chaîne. Nous le verrons, cette astuce en ouvrira une autre que nous démontrerons dans le volet suivant, pour choisir les colonnes d'extraction.

Classeur Excel à télécharger
Nous suggérons d'appuyer l'étude sur un classeur Excel hébergeant ces chaînes de textes. Nous trouvons la liste d'informations en colonne B. L'extraction chirurgicale doit intervenir en colonne D, en fonction de la donnée choisie dans la liste déroulante en cellule D3.

Numéro dynamique pour extraire un mot d-une phrase par formule Excel

Comme vous pouvez le voir, un changement de valeur dans la liste déroulante induit un changement de numéro dans une cellule voisine, plus précisément en G4. Cette liaison est réalisée par une fonction RechercheV qui agit dans un tableau de correspondances sur la droite de la feuille :

=RECHERCHEV(D3;L1:M5;2;FAUX)

C'est ce numéro dynamique qui renseigne sur la position de la donnée à extraire dans la chaîne de textes.

Initier l'extraction
Nous le savons désormais, la fonction Fractionner.Texte découpe une chaîne en plusieurs colonnes. Et pour aller piocher une information dans une colonne précise, il suffit de l'imbriquer dans la fonction d'extraction Index.
  • Sélectionner la première case de la grille d'extraction en cliquant sur la cellule D4,
  • Taper le symbole égal (=) pour débuter la construction de la formule,
  • Inscrire la fonction d'extraction, suivie d'une parenthèse ouvrante, soit : Index(,
Découper la chaîne
  • Lui imbriquer la fonction de découpe, suivie d'une parenthèse, soit : Fractionner.Texte(,
  • Désigner le premier texte à découper en mémoire en cliquant sur la cellule B4,
  • Taper un point-virgule (;) pour passer dans l'argument du délimiteur,
  • Taper un espace entre guillemets, soit : " ",
  • Puis, fermer la parenthèse de la fonction Fractionner.Texte,
De cette manière, toutes les informations qui sont séparées par un espace, sont désormais rangées dans un tableau en mémoire et nous sommes de retour dans les bornes de la fonction Index. Sa vocation est de piocher l'une des données en fonction de sa position. Cette position est renseignée en cellule G4.
  • Taper un point-virgule (;) pour passer dans l'argument de l'indice de ligne,
  • Cliquer sur la cellule G4 puis enfoncer la touche F4 pour la figer, ce qui donne : $G$4,
En effet, nous allons répliquer la formule sur les lignes du dessous pour piocher dans les cellules selon la même logique. Donc cette case de référence donnant la position d'extraction, ne doit pas se déplacer avec la formule répliquée.
  • Fermer la parenthèse de la fonction Index,
  • Puis valider la formule par le raccourci clavier CTRL + Entrée,
De cette manière, nous gardons active la cellule du résultat pour l'exploiter dans l'enchaînement. Comme vous pouvez le voir, si le nom est la décision, c'est bien la donnée placée en deuxième position qui est extraite. Si vous cliquez et glissez la poignée de la cellule D4 jusqu'en cellule D11, vous obtenez chaque nom hébergé par chaque ligne de la liste d'origine. Bien sûr, si vous modifiez la volonté avec la liste déroulante, vous réalisez l'extraction de l'information concordante, pour chaque ligne.

Extraire un mot dans une chaîne de textes Excel en fonction de sa position

Mise en pratique
Nous proposons maintenant de réaliser une mise en pratique d'un cas que nous avions solutionné à l'occasion d'une formation précédente. Mais cette fonction Fractionner.Texte n'existait pas encore. Et nous avions dû nous retourner les méninges pour construire une syntaxe relativement complexe. Comme nous le répétons à chaque reprise, en utilisant les bonnes fonctions, faut-il encore connaître leur existence, nous nous simplifions considérablement la vie.
  • En bas de la fenêtre Excel, cliquer sur l'onglet motsCles pour activer sa feuille,
  • Puis, sélectionner la première cellule d'extraction en cliquant sur sa case C4,
Si vous consultez la barre de formule, vous découvrez la syntaxe du calcul qui réalise l'extraction du mot dans la phrase, en fonction de la position indiquée à l'aide de la liste déroulante en cellule E4 : =SUPPRESPACE(STXT(SUBSTITUE(B4; " "; REPT(" "; NBCAR(B4))); ($E$4-1)*NBCAR(B4)+1; NBCAR(B4)))

Vous en conviendrez, la syntaxe est loin d'être évidente. Dans cette formation pour isoler un mot sur sa position dans un texte, nous avions entremêlé quelques fonctions dont la fonction de découpe Stxt. De plus, nous avions exploité la fonction Supprespace pour supprimer les espaces résiduels après extractions et ainsi éliminer les décalages dans les cellules. Avec la fonction Fractionner.Texte, elle peut disparaître puisque cette dernière récolte les données situées avant et après le délimiteur, l'espace ici.
  • Sélectionner toutes les extractions, soit la plage de cellules C4:C22,
  • Enfoncer la touche Suppr du clavier pour effacer les précédents calculs,
  • Cliquer sur la cellule C4 pour la sélectionner,
  • Taper le symbole égal (=) pour débuter la construction de la formule,
  • Inscrire la fonction d'extraction, suivie d'une parenthèse, soit : Index(,
  • Lui imbriquer la fonction de découpe, suivie d'une parenthèse, soit : Fractionner.Texte(,
  • Désigner le premier texte à découper en cliquant sur sa cellule B4,
  • Taper un point-virgule (;) pour passer dans l'argument du délimiteur,
  • Puis, taper un espace entre guillemets, soit : " ",
  • Fermer la parenthèse de la fonction Fractionner.Texte,
  • Taper un point-virgule (;) pour passer dans l'argument de la position pour la fonction Index,
  • Désigner la cellule de la liste déroulante en cliquant sur la case E4,
  • Pour les mêmes raisons que précédemment, la figer, ce qui donne : $E$4,
  • Fermer la parenthèse de la fonction Index,
  • Valider la formule par le raccourci clavier CTRL + Entrée,
C'est bien le mot à la position demandée qui est extrait. Si vous double cliquez sur la poignée de la cellule C4, la sentence est répliquée sur la hauteur du tableau. Bien sûr, si vous changez le numéro de la position avec la liste déroulante, toutes les extractions s'actualisent aussitôt.

Autrefois, sans l'existence de la fonction Fractionner.Texte, il fallait bien trouver des solutions. Aujourd'hui, entre les deux syntaxes et vous en conviendrez, pour le même résultat, il n'y a pas photo :

Avant:
=SUPPRESPACE(STXT(SUBSTITUE(B4; " "; REPT(" "; NBCAR(B4)));($E$4-1)*NBCAR(B4)+1; NBCAR(B4)))
Après :
=INDEX(FRACTIONNER.TEXTE(B4; " "); $E$4)

 
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