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 seconde, 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 en créer une qui recule dans le chemin jusqu’à ce qu’elle localise la dernière barre oblique inverse. Il renvoie ensuite tout après la barre oblique inverse. L’exemple suivant commence dans la cellule B1, examine tout ce qui se trouve à droite de la cellule (cellule A1), puis commence à extraire les noms de fichiers. Il parcourt toutes les cellules de la colonne A et place le nom du fichier, le cas échéant, dans la colonne B.

Sub GetFileName1()

Dim Delimiter As String     Dim Target As String     Dim sFile As String     Dim J As Integer     Dim iDataLen As Integer

Delimiter = "\"

Range("B1").Select     Do While ActiveCell.Offset(0, -1).Value <> ""

Target = ActiveCell.Offset(0, -1).Value         iDataLen = Len(Target)

sFile = "Delimiter Not Found"

For J = iDataLen To 2 Step -1             If Mid(Target, J, 1) = Delimiter Then                 sFile = Right(Target, iDataLen - J)

Exit For             End If         Next J         ActiveCell.Formula = sFile         ActiveCell.Offset(1, 0).Select     Loop End Sub

Vous pouvez également utiliser une version beaucoup plus courte d’une macro, à condition de pouvoir utiliser la fonction Split. Cette fonction a été introduite dans la version de VBA fournie avec Excel 2000, et elle séparera une chaîne en fonction d’un délimiteur que vous spécifiez et remplira les parties dans un tableau. Cet exemple montre la solution implémentée en tant que fonction définie par l’utilisateur.

Function GetFileName2(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName2 = Parts(UBound(Parts))

End Function

Dans cette utilisation, 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. Pour utiliser la fonction, mettez une formule comme celle-ci dans une cellule:

=GetFileName2(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 (7333) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Extracting_File_Names_from_a_Path [Extraction des noms de fichiers à partir d’un chemin].