Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Dernier texte après symbole
Ce nouveau volet est l'occasion de découvrir une technique précieuse, encore matricielle. Elle offre la possibilité d'extraire la fin d'une chaîne située après un caractère remarquable, pourtant répété à plusieurs reprises dans le texte.
L'exemple illustré par la capture est parfaitement dédié. Des chemins d'accès complets à des fichiers sont listés dans une première colonne du tableau. D'ailleurs, nous aurions très bien pu construire ce listing de fichiers automatiquement grâce à PowerQuery. Dans une seconde colonne, grâce à une formule unique, nous parvenons à extraire seulement les noms des fichiers qui composent ces chaînes. Cela signifie que nous sommes en mesure de ne conserver que la portion de texte située après le dernier antislash.
Classeur Excel à télécharger
Pour développer cette formule matricielle, nous proposons d'appuyer l'étude sur un classeur offrant des chemins d'accès à décortiquer.
Double cliquer sur le fichier réceptionné pour l'ouvrir dans Excel,
Puis, cliquer sur le bouton Activer la modification du bandeau de sécurité,
Nous retrouvons bien le tableau de deux colonnes. La première héberge effectivement des chemins d'accès avec des noms de fichiers en bouts de courses. La seconde est naturellement vide à ce stade. Elle attend la formule d'extraction pour isoler ces noms de fichiers.
Au-dessus de la seconde colonne, vous notez la présence du caractère remarquable de l'antislash. Il est plus précisément inscrit en cellule G3. Nous souhaitons naturellement exploiter cette cellule dans la formule. Ainsi, en fonction de la nature des chaînes qu'il aura à traiter, l'utilisateur pourra changer le symbole de séparation à détecter pour isoler ces fragments de textes.
Prélever par la fin
La première astuce de cette formule matricielle consiste à prélever les caractères en partant de la fin de la chaîne. Et pour cela, nous devons exploiter la fonction Excel Droite.
Sélectionner la case du premier nom de fichier à extraire en cliquant sur sa cellule F6,
Taper le symbole égal (=) pour débuter la construction de la formule matricielle,
Inscrire la fonction de découpe par la fin suivie d'une parenthèse, soit : Droite(,
Désigner le premier chemin d'accès à analyser en cliquant sur sa cellule B6,
Puis, taper un point-virgule (;) pour passer dans l'argument de la longueur de découpe,
Chercher le dernier symbole
Pour déterminer cette longueur de découpe en partant de la fin de la chaîne, nous devons trouver la position du premier antislash qui est en réalité le dernier, si nous étudions la chaîne en partant des premiers caractères. Et pour le débusquer, nous allons exploiter la fonction de recherche Equiv.
Inscrire la fonction de recherche de position suivie d'une parenthèse, soit : Equiv(,
Son premier argument concerne la valeur cherchée. Cette valeur cherchée dans la chaîne n'est autre que le symbole de l'antislash.
Désigner dynamiquement l'antislash en cliquant sur sa cellule G3,
En effet, nous répliquerons cette formule matricielle sur les cellules du dessous. Quand l'analyse doit se déplacer naturellement sur les chemins d'accès (B6 puis B7 etc...), dans le même temps la cellule du symbole à chercher ne doit pas bouger quant à elle. Nous la figeons donc.
Taper un point-virgule (;) pour passer dans l'argument du tableau de recherche,
Analyser les caractères individuellement
En guise de tableau de recherche, nous allons lui fournir une matrice des lettres isolées individuellement, en partant du dernier caractère et en remontant jusqu'au premier antislash trouvé. C'est ainsi que la fonction Equiv répondra favorablement pour transmettre la longueur de découpe à la fonction droite. Et pour découper une chaîne lettre à lettre, nous avons besoin de la fonction Stxt.
Mais cliquer d'abord sur le petit bouton de l'assistant fonction à gauche de la barre de formule,
Il va nous livrer quelques précieuses indications servant à simplifier la compréhension du mécanisme.
Cliquer dans la zone Tableau_recherche pour l'activer,
Inscrire la fonction de découpe suivie d'une parenthèse, soit : Stxt(,
Désigner de nouveau le premier chemin d'accès en cliquant sur sa cellule B6,
Puis, taper un point-virgule (;) pour passer dans l'argument de la position de départ,
Pour passer chaque lettre en revue en partant de la dernière, nous devons créer une matrice virtuelle de numéros pour retrancher la position en cours au nombre total de caractères dans la chaîne. Cette matrice doit partir du chiffre 1 et poursuivre sur un nombre assez grand d'occurrences pour être sûr de croiser l'antislash. Pour créer cette matrice virtuelle de nombres, nous avons besoin de la fonction Ligne. Le nombre total de caractères peut quant à lui être renvoyé par la fonction NbCar. Le dernier caractère ne sera donc pas analysé (NbCar -1 pour le premier traitement récursif). Nous partons logiquement du principe qu'un délimiteur ne se trouve jamais en dernière position.
Inscrire la fonction pour le nombre de caractères, suivie d'une parenthèse, soit : NbCar(,
Désigner de nouveau le premier chemin d'accès en cliquant sur sa cellule B6,
Fermer alors la parenthèse de la fonction NbCar,
Taper le symbole moins (-) pour annoncer le retranchement à suivre,
Construire alors la matrice virtuelle de nombres suivante : Ligne($1:$200),
Les dollars sont importants pour que ces bornes ne varient pas avec la réplication de la formule. Dans ce traitement récursif, au nombre total de caractères, nous allons d'abord retrancher une unité puis deux et ainsi de suite jusqu'à atteindre les deux cents. Nous remontons donc dans les caractères à analyser. Et précisément, nous devons les étudier un à un pour débusquer la présence de l'antislash. C'est justement ce que nous permet de définir le troisième et dernier argument de la fonction Stxt. Il concerne la longueur de découpe.
Taper un point-virgule (;) pour passer dans l'argument de la longueur de découpe,
Taper le chiffre 1 pour analyser les caractères individuellement et tour à tour,
Puis, fermer la parenthèse de la fonction Stxt,
Comme vous pouvez le voir, l'assistant fonction réagit par une matrice en regard de la zone Tableau_recherche. Nous y trouvons chaque caractère du chemin d'accès en partant de l'avant dernier et en remontant sur 200 positions, tel que nous l'avons défini. C'est ainsi que nous allons finir par croiser le chemin du dernier antislash.
Cliquer dans la zone Type de l'assistant fonction pour l'activer,
Puis, saisir le chiffre 0 pour réaliser une recherche exacte,
Cette fois, l'assistant pour la fonction Equiv répond par la position trouvée pour l'occurrence de l'antislash. Rappelons-le, c'est bien sur ce symbole que nous avons engagé la recherche.
Si vous analysez le premier chemin d'accès, il s'agit effectivement de l'emplacement précis du dernier antislash.
Dans la barre de formule, cliquer à la toute fin de la syntaxe,
Fermer la parenthèse de la fonction Droite,
Puis, valider la formule matricielle par le raccourci clavier CTRL + MAJ + Entrée,
Comme vous pouvez le voir, le premier nom de fichier tombe. Il a parfaitement été isolé par le calcul matriciel.
Double cliquer sur la poignée du résultat pour répliquer la logique sur la hauteur du tableau,
Nous obtenons tous les noms de fichiers des fins de chaînes, parfaitement isolés dans leurs cellules. Maintenant, vous pouvez tester cette fabuleuse formule matricielle en remplaçant en G3 l'antislash par un tiret (-) ou un point (.).
Dans le premier cas, nous obtenons la chaîne placée après le dernier tiret. Dans le second cas, nous livrons toutes les extensions de chaque fichier. La syntaxe complète de la formule matricielle que nous avons construite est la suivante :
★ Le saviez-vous ? Depuis la version Excel 2007, il est possible à l'aide du format conditionnel de mettre en valeur les cellules des feuilles à l'aide de symboles graphiques qui varient en fonction du contenu