Récupérer tous les noms de fichier dans un dossier

Récupérer tous les noms de fichier dans un dossier - VB/VBA/VBS - Programmation

Marsh Posté le 14-06-2012 à 09:35:34    

Bonjour,
 
Je cherche à créer un script me permettant de récupérer tous les noms de fichiers dans un dossier. En effet, j'aurai un dossier avec un certain nombre de .jpg (par exemple cn-pimy0.jpg), et je dois récupérer uniquement le pimy0 sous la forme d'un string. Mais je n'ai absolument aucune idée de quelles fonctions utiliser, n'étant pas un habitué du VB. Pourriez-vous m'aider ? Merci !
 
J'en ai besoin pour ensuite chercher le numéro de téléphone dans une base LDAP associé à ce string.
 
Quand je fais ça :
recupererNom = Dir("C:\Documents and Settings\s.offredo\Mes documents\Projet 1\photos" )
 
ça me retourne un beau 0. Pourtant j'ai 2 fichiers dedans.


Message édité par Mnoxis le 14-06-2012 à 10:49:21
Reply

Marsh Posté le 14-06-2012 à 09:35:34   

Reply

Marsh Posté le 14-06-2012 à 13:01:23    

Salut, ici en VBA Excel , à adapter à ton contexte
Créer un bouton et l'affecter à Tst

Option Explicit
 
Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
 
Dim NbFichiers As Long, NbDossiers As Long
Dim Dep As Currency, Fin As Currency, Freq As Currency
 
Private Sub Liste(ByVal sChemin As String, ByVal bSousDossier As Boolean)
Dim FSO As Object, Dossier As Object, SousDossier As Object, Fichier As String
 
    Set FSO = CreateObject("Scripting.FileSystemObject" )
    Set Dossier = FSO.GetFolder(sChemin)
 
    Fichier = Dir$(sChemin & "\*.*" )
    Do While Len(Fichier) > 0
        NbFichiers = NbFichiers + 1
        With Feuil1
            .Cells(NbFichiers, 1) = sChemin
            .Cells(NbFichiers, 2) = Fichier
        End With
        Fichier = Dir$()
        Application.StatusBar = "Dossiers : " & NbDossiers & "  Fichiers : " & NbFichiers
    Loop
 
    If bSousDossier Then
        For Each Dossier In Dossier.SubFolders
            NbDossiers = NbDossiers + 1
            Liste Dossier.Path, True
        Next Dossier
    End If
 
    Set Dossier = Nothing
    Set FSO = Nothing
End Sub
 
Sub Tst()
Dim sChemin As String
    sChemin = ThisWorkbook.Path
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = sChemin & "\"
        .Title = "Sélectionner un Dossier"
        .AllowMultiSelect = False
        .InitialView = msoFileDialogViewDetails
        .ButtonName = "Sélection Dossier"
        .Show
        If .SelectedItems.Count > 0 Then
            Feuil1.Cells.Clear
            Application.ScreenUpdating = False
            Application.StatusBar = ""
            DoEvents
            QueryPerformanceCounter Dep
            NbFichiers = 0: NbDossiers = 0
 
            Liste .SelectedItems(1), True
 
            Application.ScreenUpdating = True
            QueryPerformanceCounter Fin: QueryPerformanceFrequency Freq
            Application.StatusBar = "Dossiers : " & NbDossiers & "  Fichiers : " & NbFichiers & " / " & Format(((Fin - Dep) / Freq), "0.00 s" )
        End If
    End With
End Sub


Message édité par kiki29 le 14-06-2012 à 13:16:37

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
Reply

Marsh Posté le 14-06-2012 à 13:41:48    

Merci beaucoup je vais regarder ça.

Reply

Marsh Posté le 05-10-2012 à 17:13:54    

Bonjour
Eventuellement, une autre solution sans installation ou macro avec un fichier de commande dos.
Ce code liste le répertoire et le mets la lite dans un fichier liste.txt.
Pour ce faire :  
Copier le code ci dessous dans le bloc note et enregistrer le fichier dans le dossier concerné.
Renommer le fichier .txt en .bat (exemple listerepertoire.bat)
Ensuite une fois éxécuté le fichier listerepertoire.bat (deux clik sur le fichiet bat) copier le contenu de liste.txt dans writer.  
 
    CLS
    if exist liste.txt del liste.txt
    DIR/B *.* > liste.txt
    liste.txt
    pause

 
nota : Pour modifier clik droit sur le fichier .bat > modifier

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed