Extraction de noms de fichiers à partir d’un chemin (Microsoft Excel)
Barry a une feuille de calcul dans laquelle une colonne contient de nombreux chemins de fichiers. Il aimerait un moyen d’extraire uniquement le nom de fichier (la partie à droite de la barre oblique inverse finale) de chaque chemin. Il se demande s’il existe un moyen rapide de le faire sans utiliser la fonction Texte en colonnes.
Il existe plusieurs façons différentes, selon que vous souhaitez utiliser une macro ou non.
Si vos noms de fichiers ont tous la même longueur, vous pouvez simplement utiliser la fonction DROITE pour extraire les derniers caractères. (Cette formule suppose que le chemin complet et le nom du fichier se trouvent dans la cellule A1.)
=RIGHT(A1,11)
Cela suppose que le nom de fichier comporte toujours 11 caractères, par exemple « text001.txt ». Si le nom de fichier a une longueur différente dans chaque instance, cette approche ne fonctionnera pas. Au lieu de cela, vous pouvez essayer cette formule:
=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))
Notez que la formule utilise la fonction SUBSTITUTE deux fois. Dans chaque cas, il remplace les contre-obliques (\) par autre chose. La première fois, il les remplace tous par une valeur ASCII de 1 et la deuxième fois, il les remplace par rien (une chaîne vide) afin de déterminer le nombre de barres obliques inverses dans le chemin d’origine. La fonction MID est utilisée pour localiser (à l’aide de FIND et des fonctions SUBSTITUTE) l’emplacement de la dernière barre oblique inverse dans le chemin et tout renvoyer après ce point.
Une formule plus courte peut être utilisée si vous êtes sûr que le nom de fichier ne fera jamais plus de 99 caractères:
=TRIM(RIGHT(SUBSTITUTE(A2,"\",REPT(" ",100)),99))
Cette formule remplace tous les contre-obliques par 100 espaces, saisit les 99 caractères les plus à droite de la chaîne résultante (ce serait le nom de fichier avec un tas d’espaces devant lui), puis supprime tous les espaces.
Si vous souhaitez utiliser une macro, vous pouvez créer une fonction très courte qui séparera une chaîne (le chemin complet, dans ce cas) en fonction de délimiteurs:
Function GetFileName(File_Path) As String Dim Parts Parts = Split(File_Path, Application.PathSeparator) GetFileName = Parts(UBound(Parts)) End Function
Je vous ai dit que c’était court! La fonction qui fait le gros travail est la fonction Split qui sépare une chaîne en fonction d’un délimiteur que vous spécifiez et remplit les parties dans un tableau. Dans cet exemple, la fonction Split utilise comme délimiteur le séparateur de chemin approprié pour le système sur lequel Excel s’exécute.
Le dernier élément du tableau résultant (déterminé avec la fonction UBound) contient la partie du chemin d’origine qui se trouve à droite du dernier séparateur de chemin – le nom du fichier.
Vous pouvez développer une fonction encore plus courte pour faire le travail:
Function GetFileName(File_Path) As String GetFileName=Mid(File_Path,InStrRev(File_Path,"\")+1 End Function
Pour utiliser l’une ou l’autre fonction, mettez une formule comme celle-ci dans une cellule:
=GetFileName(A1)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (12903) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Extracting_File_Names_from_a_Path [Extraction des noms de fichiers à partir d’un chemin]
.