Rechercher : dans
Par :

Lister les noms de fichiers d'un repertoire

Dernière réponse le 16 nov 2006 à 15:11:55 ruth, le 29 jun 2004 à 14:01:12 
 Signaler ce message aux modérateurs

Bonjour à tous !
SVP en VB comment lister les noms des fichiers (texte en principe) d'un repertoire donné?
Merci d'avance et a+
Ruth

Meilleures réponses pour « lister les noms de fichiers d'un repertoire » dans :
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
Fichier 7Z VoirFormat 7Z Un fichier 7Z est un fichier compressé. Comment lire un fichier 7z ? Pour décompresser un fichier 7Z, il suffit d'utiliser le logiciel suivant : 7zip
Systèmes d'exploitation - DOS - Astuces VoirAvoir accès au lecteur de CD-ROM Le lecteur de CD-ROM se déclare dans les fichiers config.sys et autoexec.bat. Dans le fichier config.sys il faut déclarer le gestionnaire de périphérique pour votre lecteur CD-ROM (bien qu'il soit détecté...

1

_julien_, le 29 jun 2004 à 15:45:22
Répondre à _julien_

2

Nico, le 10 mar 2006 à 14:29:04

Bonjour,
Je recherche a faire la meme chose en vba sous access, mais les fonctions citée dans le lien précédent ne sont pas reconnues.
Si quelqu'un peut m'aider ,Merci :)

Répondre à Nico

3

Lupin, le 10 mar 2006 à 15:15:48
  • +3

Bonjour,

Sous VB et VBA vous pouvez utiliser les objets de scripting !


Exemple :

Sub ListeFichier
  Const ctePourLecture = 1
  Const ctePourEcrire = 2
  Const ctePourAjouter = 8

  Dim objFSO, objDossier, objFichier, objResultat
  Dim Repertoire, NomFichierTxt

  On Error Resume Next

  Repertoire = "C:\Document\Excel"
  NomFichierTxt = "Resultat.txt"
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objDossier = objFSO.GetFolder(Repertoire)
  Set objResultat = objFSO.CreateTextFile((Repertoire & "\" & NomFichierTxt),ctePourEcrire)


  If (objDossier.Files.Count > 0) Then
     For Each objFichier In objDossier.Files
        If (InStr(1, objFichier.Name, ".xls", 1) > 0) Then
            objResultat.WriteLine objFichier.Name
        End If
     Next
   End If

  objResultat.Close
  Set objResultat = Nothing
  Set objDossier = Nothing
  Set objFSO = Nothing

End Sub


Lupin

Répondre à Lupin

4

Nico, le 10 mar 2006 à 15:22:16

Merci beaucoup de ta reponse,
mais j'ai trouvé un code plus simple sous vba:

With Application.FileSearch
.LookIn = "C:\dede"
.Filename = "*.*"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End With

Vus que le controle dirlistbox,drivelistbox sous vba n'existe pas, a ton avis faut t'il beaucoup de temps pour recréer un mini exploreur avec cette fonction et un treeview? (je ne connais pas les treeview, je sui entrain de me documenter dessus)

Répondre à Nico

5

Lupin, le 10 mar 2006 à 16:56:42

Re:

Non, ce fut d'ailleur l'un de mes TPs lors de mon 3e cours de VB,
créer un interface qui remplace la boite de dialogue [Ouvrir] et
[ Enregistrer sous ].

Lupin

Répondre à Lupin

6

Nico, le 13 mar 2006 à 15:45:28

Bonjour :)
Ce week-end j'ai eu le temps de comprendre ce qu'était un treeview et comment globalement cela fonctionnait 'il.
En effet c'est pas tres compliqué.
Néanmoins je sui tombé sur une autre difficultée, certains repertoires ont un acces protégé (interdit a l'utilisateur que je suis).
Ainsi lorsque je souhaite obtenir l'arboloescence de ces derniers, cela bug et une erreur apparait, quelqu'un aurait une idée afin de contrer cela?
Merci d'avance :)

Répondre à Nico

7

ushiwa.sasuke, le 16 oct 2006 à 15:19:54

Bonjour,

Je cherche un peu à faire la même chose...seulement que moi l'utilisateur choisit le répértoire ou il faut lister les .doc ensuite j'aimerai pouvoir tout lister dans une listBox mais je sais aps trop comment faire...

Voici mon code :

ce qu'il faut déclarer en haut

Option Compare Database

Private Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type

Public Enum NetWork
    WithNetworkFolders = 0
    WithoutNetworkFolders = 2
End Enum

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
    ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
    As Long
    
Const BIF_RETURNONLYFSDIRS = &H1
Const BIF_USENEWUI = &H40


mon bouton parcourir :
Private Sub btn_parcourir_Click()

    Me.edit_repertoire = SelectFolder("D:\", WithoutNetworkFolders)
    
    If IsNull(edit_repertoire) Or Len(edit_repertoire) = 0 Then
        btn_lister.Visible = False
    Else
        btn_lister.Visible = True
    End If
    
End Sub


la fonction SelectFolder :
Public Function SelectFolder(Optional Folder As String = "" _
           , Optional NetWorkFolders As NetWork = WithNetworkFolders _
           ) As String
    Dim X As Long, bi As BROWSEINFO, dwIList As Long
    Dim szPath As String, wPos As Integer
    If Folder = "" Then Folder = CurrentProject.Path
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = "Sélectionnez votre dossier et cliquez sur OK"
        .ulFlags = BIF_RETURNONLYFSDIRS _
            Or BIF_USENEWUI _
            Or NetWorkFolders
    End With
    dwIList = SHBrowseForFolder(bi)
    szPath = Folder & Space$(512 - Len(Folder))
    X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    If X Then
        wPos = InStr(szPath, Chr(0))
        SelectFolder = Left$(szPath, wPos - 1)
    Else
        SelectFolder = ""
    End If
End Function


je rend visible mon bouton lister :
Private Sub edit_repertoire_Change()
    
    If IsNull(edit_repertoire.Text) Or Len(edit_repertoire.Text) = 0 Then
        btn_lister.Visible = False
    Else
        btn_lister.Visible = True
    End If
End Sub


fonction de mon bouton lister (c'est la ou je bloque :S)
Private Sub btn_lister_Click()

    Dim ext As String
    Dim Ctr As Integer
    Const myRep = "edit_repertoire.Text" ' Voir s'il ne faut pas definir repertoire...
    
    ext = Dir(myRep & "*.doc")
    List_rep.Visible = True
    List_rep.DefaultValue = ""
    Do While ext <> ""
        List_rep.ControlSource = ext
        ext = Dir
    Loop
   
   List_rep.ListStyle = fmListStyleOption
        
    Next
End Sub


Si qqun pourrait m'aider ca serait vraiment sympa...

Répondre à ushiwa.sasuke

8

Lupin.A, le 17 oct 2006 à 00:56:51

Bonjour,

je n'ai pas tout saisi faute de temps mais déjà il serait souhaitable de modifier la déclaration de la constante.

Const myRep = "edit_repertoire.Text"

ext = Dir(myRep & "*.doc")

la constante semble pointer sur un objet VB et on y lit la propriété "Text", la constante ne peut varier lors de l'éxécution
du programme, ce serait plutôt :

Dim myRep As String

myRep = "edit_repertoire.Text"
ext = Dir(myRep & "*.doc")

Lupin

Répondre à Lupin.A

9

ushiwa.sasuke, le 17 oct 2006 à 14:32:24

Bonjour,

pour le moment Access ne m'a pas généré d'erreur à ce niveau la...

mais il ne trouve pas la propriété : ListStyle

En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...?

Merci d'avance.

Meilleures salutations.

Répondre à ushiwa.sasuke

10

ushiwa.sasuke, le 17 oct 2006 à 14:32:58

Bonjour,

pour le moment Access ne m'a pas généré d'erreur à ce niveau la...

mais il ne trouve pas la propriété : ListStyle

En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...?

Merci d'avance.

Meilleures salutations.

Répondre à ushiwa.sasuke

11

ushiwa.sasuke, le 17 oct 2006 à 14:33:02

Bonjour,

pour le moment Access ne m'a pas généré d'erreur à ce niveau la...

mais il ne trouve pas la propriété : ListStyle

En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...?

Merci d'avance.

Meilleures salutations.

Répondre à ushiwa.sasuke

12

ushiwa.sasuke, le 17 oct 2006 à 15:41:31

Pkoi mon post s'affiche-t-il 3 fois ???

Répondre à ushiwa.sasuke

13

ushiwa.sasuke, le 19 oct 2006 à 16:53:57

J'ai essayé comme ceci mais sans résultat...

Private Sub btn_lister_Click()

    Dim ext As String
    Const myRep = "edit_repertoire.Text" ' Voir s'il ne faut pas definir repertoire...
    
    ext = Dir(myRep & "*.doc")
    List_rep.RowSource = ""
    'Do While ext <> ""
        'List_rep.RowSource = List_rep.RowSource & ext & ";"
        'ext = Dir
    Loop
   
   'List_rep.ListStyle = fmListStyleOption
        
    
End Sub


Personne n'a une idée svp ? je commence à desespérer :'(

Répondre à ushiwa.sasuke

14

Lupin.A, le 21 oct 2006 à 01:22:38
  • +1

Bonjour,

vous devez détailler plus précicément la nature des objets utilisés !

voici un exemple de code :

Private Sub btn_lister_Click()

    Dim monRep As Variant
    Dim ext As String, Ctr As Integer
    
    ext = ""
    monRep = Me.edit_repertoire.Value
    
    
    ext = Dir(monRep & "\*.doc")
    List_rep.Visible = True
    List_rep.DefaultValue = ""
    Do While ext <> ""
        Me.List_rep.AddItem ext
        ext = Dir
    Loop
    'List_rep.ListStyle = fmListStyleOption

End Sub
'


je ne m'explique toujours pas :

Const myRep = "edit_repertoire.Text"

et quel est le type de l'objet [ List_rep ] ?

Lupin

Répondre à Lupin.A

15

ushiwa.sasuke, le 23 oct 2006 à 11:12:45

Merci pour votre réponse...

mais pour info les propriétés additems et lifestyle sont propriétaire à VB et non à VBA cela n'existe pas...donc c'est pour ca que je cherche un autre moyen de le faire...

Merci d'avance.

Répondre à ushiwa.sasuke

16

Lupin.A, le 23 oct 2006 à 13:18:46

Bonjour,

le code soumis dans mon dernier post a été généré et testé sous
VBA d'access. Pour ce qui est de la méthode AddItem, elle est
bel et bien présente sous VBA, je l'utilise depuis longtemps ...

Lupin

Répondre à Lupin.A

17

ushiwa.sasuke, le 23 oct 2006 à 14:44:21

Ah...c'est bizarre ca car chez moi elle est inconnue...

Quelle est la version d'Access que vous utilisez ? Y'a-t-il une librairie à activer ou un dll ???


De mon coté je suis en Access 2000...

Merci d'avance.

Répondre à ushiwa.sasuke

18

Lupin.A, le 23 oct 2006 à 15:51:17
  • +2

Re :

je suis sous Access 2002 ( "Suite Office XP").

pour ce qui est des librairies supplémentaires, je vais jeter un
coup d'oeil ce soir, car la je ne suis pas sous le même environnement.

si vous vouliez bien identifier les objets que vous utiliser, je pourrai plus
vous donner mon opignon !!!


List_Rep : Zone de liste déroulante, Zone de liste, Zone de texte ... ?
edit_repertoire : Zone de liste déroulante, Zone de liste, Zone de texte ... ?

Lupin

Répondre à Lupin.A

19

ushiwa.sasuke, le 23 oct 2006 à 16:36:49

Oki aucun problème

Merci bcp de consacrer un peu de temps pour moi :)

Sinon pour les 2 objets :


List_Rep : Zone de liste
edit_repertoire : Zone de texte

Merci d'avance.

Répondre à ushiwa.sasuke