Carol a un répertoire avec environ 1000 fichiers avec des noms tels que YR1905-LIC12345-Smith, Harry-Brown, Mary. Elle aimerait mettre tous ces noms de fichiers (pas les fichiers eux-mêmes) dans une feuille de calcul et séparer les noms au tableau de bord. Ainsi, l’exemple de nom de fichier occuperait en fait quatre cellules sur une seule ligne. Carol pense que cela prendra une macro pour accomplir, mais elle ne sait pas comment accéder aux noms de fichiers dans cette macro.

Vous pouvez, bien sûr, utiliser une macro pour ce faire, mais vous n’avez pas besoin d’utiliser une macro. Vous pouvez, à la place, utiliser une vieille astuce de l’ère DOS pour obtenir ce dont vous avez besoin.

À l’invite de commande (accessible via Windows: Démarrer | Tous les programmes | Accessoires | Invite de commandes), naviguez jusqu’à ce que vous soyez dans le répertoire contenant les fichiers. Entrez ensuite ce qui suit:

dir /b /a-d > filelist.txt

Cela crée un fichier texte (filelist.txt) qui contient une liste de tous les fichiers dans le répertoire en cours. Maintenant, dans Excel, vous pouvez suivre ces étapes:

  1. Dans Excel, cliquez sur l’outil Ouvrir dans la barre d’outils. Excel affiche la boîte de dialogue Ouvrir.

  2. À l’aide de la liste déroulante Fichiers de type au bas de la boîte de dialogue, indiquez que vous souhaitez ouvrir les fichiers texte (.prn; .txt; * .csv).

  3. Recherchez et sélectionnez le fichier filelist.txt que vous avez créé à l’invite de commande.

  4. Cliquez sur Ouvrir. Excel démarre l’Assistant d’importation de texte, affichant la boîte de dialogue Étape 1 sur 3. (Voir la figure 1.)

  5. Assurez-vous que le choix Délimité est sélectionné, puis cliquez sur Suivant. Excel affiche la boîte de dialogue Étape 2 sur 3.

  6. Assurez-vous de spécifier un tiret comme délimiteur. (Vous devrez cliquer sur Autre, puis entrer un tiret comme délimiteur.)

  7. Cliquez sur Terminer. Votre fichier est importé et cassé au niveau des tirets, comme vous le souhaitez.

Les étapes ci-dessus sont assez faciles à accomplir, en particulier si vous n’avez besoin d’obtenir la liste des fichiers dans Excel que de temps en temps. Si vous devez le faire plus régulièrement, vous devriez probablement chercher un moyen de le faire en utilisant une macro. La macro suivante fonctionnera très rapidement:

Sub GetFileNames()

Dim sPath As String     Dim sFile As String     Dim iRow As Integer     Dim iCol As Integer     Dim splitFile As Variant

'specify directory to use - must end in "\"

sPath = "C:\"



iRow = 0     sFile = Dir(sPath)

Do While sFile <> ""

iRow = iRow + 1         splitFile = Split(sFile, "-")

For iCol = 0 To UBound(splitFile)

Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol)

Next iCol         sFile = Dir     ' Get next filename     Loop End Sub

Lorsque vous exécutez la macro, assurez-vous qu’il n’y a rien dans la feuille de calcul actuelle. (Tout ce qui s’y trouve sera écrasé.) De plus, vous devez modifier le chemin du répertoire affecté à la variable sPath vers le début de la macro.

Si vous obtenez une erreur lorsque vous exécutez la macro, il y a de bonnes chances que vous utilisiez Excel 97. La fonction Split (utilisée pour séparer le nom de fichier au niveau des tirets) n’a pas été ajoutée à VBA avant Excel 2000. Si vous utilisez Excel 97 , vous pouvez alors utiliser la routine suivante pour émuler ce que fait la fonction Split:

Function Split(Raw As String, Delim As String) As Variant     Dim vAry() As String     Dim sTemp As String     Dim J As Integer     Dim Indx As Integer

Indx = 0     sTemp = Raw     J = InStr(sTemp, Delim)

While J > 0         Indx = Indx + 1         ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(Left(sTemp, J))

sTemp = Trim(Mid(sTemp, J, Len(sTemp)))

J = InStr(sTemp, Delim)

Wend     Indx = Indx + 1     ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(sTemp)

Split = vAry()

End Function

_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 (11143) 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:

lien: / excelribbon-Pulling_Filenames_into_a_Worksheet [Extraction des noms de fichiers dans une feuille de travail].