Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Lister un répertoire sans les chemins

rabiet

XLDnaute Nouveau
Bonjour,

j'utilise le code suivant pour lister le contenu d'un répertoire :

Sub ListFichiers()

Set fs = Application.FileSearch
With fs
.NewSearch
.SearchSubFolders = False
.LookIn = "D:\Mes documents\excel" '<- Chemin du répertoire
.FileType = msoFileTypeAllFiles
.Execute

For i = 1 To .FoundFiles.Count '<- Ecrit dans la feuille active
Range("A1").Offset(i, 0).Value = .FoundFiles(i)

Next i

End With

End Sub

======

Ce qui donne : D:\Mes documents\excel\Classeur1.xls, ...

Je souhaiterais à faire la même chose mais sans l'indication du chemin, et (éventuellement) sans indication de l'extension ".xls"

D'avance merci si qqn voit comment faire.

@+

Chr.
 

RENAUDER

Nous a quitté
Repose en paix
Re : Lister un répertoire sans les chemins

Bonjour,
Testes ceci
Code:
Dim NameSansExtension As String
Sub ListFichiers()
Dim NomFichier As String
    Set fs = Application.FileSearch
    With fs
        .NewSearch
        .SearchSubFolders = False
        .LookIn = "C:\excel"    '<- Chemin du répertoire
        .FileType = msoFileTypeAllFiles
        .Execute
        For I = 1 To .FoundFiles.Count    '<- Ecrit dans la feuille active
        ShortFilename (.FoundFiles(I))
            Range("A1").Offset(I, 0).Value = NameSansExtension 
        Next I
    End With
End Sub
Function ShortFilename(LongFilename As String) As String
    For I = Len(LongFilename) To 1 Step -1
        If Mid(LongFilename, I, 1) = "\" Then Exit For
    Next
    ShortFilename = Mid(LongFilename, I + 1, Len(LongFilename))
    NameSansExtension = Mid(ShortFilename, 1, Len(ShortFilename) - 4)
End Function
 

Pierrot93

XLDnaute Barbatruc
Re : Lister un répertoire sans les chemins

Bonsoir Rablet, Eric

une autre solution :

Code:
For i = 1 To .FoundFiles.Count '<- Ecrit dans la feuille active
t = Split(.FoundFiles(i), "\")
Range("A1").Offset(i, 0).Value = Split(t(UBound(t)), ".")(0)
Next i

"t" étant déclarée en début de procédure comme suit :

Code:
Dim t

bonne soirée
@+
 

Staple1600

XLDnaute Barbatruc
Re : Lister un répertoire sans les chemins

Bonsoir à tous

Une autres solution (mais un brin lourdingue)
VB:
Sub ListFichiers()
Set fs = Application.FileSearch
With fs
.NewSearch
.SearchSubFolders = False
.LookIn = "D:\Mes documents\excel" '<- Chemin du répertoire
.FileType = msoFileTypeAllFiles
'.[B]FileType = msoFileTypeExcelWorkbooks 
'décommentez  cette ligne pour chercher uniquement des documents Excel[/B]
.Execute

For i = 1 To .FoundFiles.Count '<- Ecrit dans la feuille active
Range("A1").Offset(i, 0).Value =  _
 StrReverse(Left(StrReverse(.FoundFiles(i)), _
InStr(StrReverse(.FoundFiles(i)), "\") - 1))

Next i
End With
End Sub


EDITION: En plus court
VB:
Sub ListFichiers()
Dim x
Dim xx
Dim i As Integer
....debut du code
x = StrReverse(.FoundFiles(i))
xx = StrReverse(Left(x, InStr(x, "\") - 1))
Cells(i, 1) = Left(xx, Len(xx) - 4)
... fin du code
End Sub
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : Lister un répertoire sans les chemins

bonsoir


Tu peux aussi utiliser les spécificités de la fonction Dir:

Code:
Dim strNom As String
'
For i = 1 To .FoundFiles.Count
    strNom = .FoundFiles(i)
    Range("A1").Offset(i, 0).Value = _
               Left(Dir(strNom), Len(Dir(strNom)) - 4)
Next i


Bonne soirée
MichelXld
 

rabiet

XLDnaute Nouveau
Re : Lister un répertoire sans les chemins

Merci à tous pour vos réponses.
Vraiment super XLD. Les patrons devrait vous sponsoriser.
J'étais en déplacement aujourd'hui... je reviens... et hop ! mon boulot est fait
@+
Chr.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…