Se connecter avec
S'enregistrer | Connectez-vous

Obtenir les noms des fichiers d'un fichier grace a son chemin

Dernière réponse : dans Programmation

Bonjour le forum .

Je souhaiterais lister tous les noms de fichier situé a l'interieur d'un dossier et celà grace a l'indication du chemin de ce fichier ( :pt1cable:  :pt1cable:  ) .

Pour l'instant j'ai fait ça , qui ne marche pas du tout :

  1. Option Explicit
  2.  
  3. Public Sub ContenuDuDossier(ByVal strDossier As String)
  4. Dim strFichier As String
  5.  
  6. '//Vérifier que le dossier existe bien
  7. If Dir(strDossier, vbDirectory) = "" Then
  8. MsgBox "Dossier introuvable "
  9. Exit Sub
  10. End If
  11. '//Lister tous les fichiers du dossier
  12. strFichier = Dir(strDossier, vbNormal)
  13. While strFichier <> ""
  14. '// Afficher le nom du fichier
  15. ComboBoxLogoMarques.Value = strFichier.Value
  16. ' //Lire le fichier suivant
  17. strFichier = Dir
  18. Wend
  19.  
  20. End Sub
  21.  
  22. Private Sub ComboBoxLogoMarques_Change()
  23. Dim chemin As String
  24. chemin = TxtBoxLogoMarques.Value ' //on renseigne le chemin du fichier
  25.  
  26. Nomfichier (chemin)
  27.  
  28. End Sub


Dejà est ce que c'est possible ?

Merci a ceux qui répondront .
Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

Oui, c'est possible. :) 

Utilise la méthode ParentFolder() de l'objet File de la bibliothèque FileSystemObject pour récupérer le chemin dans le nom complet d'un fichier qui existe.

Et abandonne la commande Dir() - pour le système FSO, et les boucles While .. Wend - pour la boucle Do .. Loop. On n'est plus en 1985 !

Exemple à étudier :
  1. Sub ShowSiblingFiles(ByVal FileName As String)
  2. Dim FSO As New Scripting.FileSystemObject
  3. Dim folder As Scripting.folder
  4. Dim file As Scripting.file
  5.  
  6. If Not FSO.FileExists(FileName) Then
  7. MsgBox "Dossier introuvable "
  8. Exit Sub
  9. End If
  10.  
  11. Set folder = FSO.GetFile(FileName).ParentFolder
  12.  
  13. For Each file In folder.Files
  14. MsgBox file.Name
  15. Next
  16. End Sub


_______________
EDIT:
PS: Pas de question du genre "eh zeb, ça compile pas". Passe un minimum de temps à découvrir ce qu'est une référence de bibliothèque ;) 

"eh zeb , ça compile pas"

Bonjour Zeb , dejà merci d'avoir repondu .

Bah le truc c'est que le chemin est dejà renseigné via un TextBox et que je souhaite afficher les noms des fichiers dans une listBox ( je pense savoir comment faire pour enlever les .xls/iso/jpg ect ...) .
Or dans ce code , tu me dis si je me trompe , on renseigne le nom du fichier pour obtenir son chemin .

N'empeche que je vais tester ce code , on verra bien si j'en tire quelque chose ^^ .

Aurelie
Expert Programmation

:D 

Non, non, non... :non:  On ne teste pas le code, on l'étudie, pour voir comment ça marche et ainsi le refaire, avec quelques modifs éventuelles pour répondre exactement au besoin.

T'as pu voir les références ? T'as ajouté Scripting ?

Après étudier le code ainsi que quelques tutoriels , j'ai codé ceci :

  1. Private Sub ComboBoxLogoMarques_Change()
  2. Dim Chemin As String
  3. Chemin = TxtBoxLogoMarques.Value
  4.  
  5. NomFichiers (Chemin)
  6.  
  7. End Sub
  8.  
  9.  
  10. Public Sub NomFichiers(ByVal Chemin As String)
  11.  
  12. Dim ScanFic As Office.FileSearch
  13. Dim NomFic As Variant
  14. Dim I As Long
  15.  
  16. Set ScanFic = Application.FileSearch
  17.  
  18. With ScanFic
  19. .NewSearch
  20. .LookIn = Chemin '// on recupere le chemin
  21. .SearchSubFolders = True
  22. .FileType = msoFileTypeAllFiles
  23.  
  24. I = 0
  25. For Each NomFic In .FoundFiles
  26. I = I + 1
  27. ComboBoxMarque.value = NomFic '// on insere les noms dans la comboBox
  28. Next
  29.  
  30.  
  31. End With
  32.  
  33. End Sub


Il ne se passe strictement rien , je ne comprend pas , le code me semble bon ...
Tu parles de Scripting , et de references , je vais chercher de ce coté ...

Lassé par la pub ? Créez un compte