Mettre dans une ListBox les nom des fichier qui se trouve dans un répertoire [ex [Résolu]

Signaler
-
 EnguerrandP -
Bonjour ,
J'ai une nouvelle question :
Comment on peut afficher les nom de fichier qui se trouve dans un répertoire?

Lors de mes recherche sur le net j'ai bien trouver une solution mais lorsque je compile sa me mais érreur "445".

Aprés quelque recherche je découvre que la fonction utilisé dans la solution que j'ai trouver n'ai plus viable depuis excel 2003.

Pouvez vous m'indiquer comment on peut fair pour adapter les fonction qui sont hors d'usage ?

  ' 0) On vérifie l'année pour le répertoire : '
  Dim Dj As Date, dateref As Date, ané As Integer
  Dim Fournisseur() As String
  
  Dj = Date
  ané = Year(Dj)
  dateref = DateSerial(Year(Date), 6, 30)
      
  If (Dj > dateref) Then
  Année = ané & "_" & ané + 1
      
    ElseIf (Dj < dateref) Then
      Année = ané - 1 & "_" & ané
      
  End If

  ' 1) on crée le dossier dans toutes les cas (et s'il existe déjà, on gère) : '
  On Error Resume Next
  MkDir "C:\Historique" & Année & ""
      
  On Error GoTo 0
      
  ' 2) On regarde si le répertoire est vide : '
      
  If Dir("C:\Historique" & Année & "") = "" Then
    MsgBox " Vous n'avez pas encore passer de commande cette année . "
    MsgBox " Voulez vous voir le(s) contract(s) en cour ? ", vbYesNo + vbInformation
  ' 3) On regarde les fichier qu'il contient est on l'affiche : '
    ElseIf Dir("C:\Historique" & Année & "") <> "" Then
    
           Application.FileSearch.LookIn = "C:\Historique" & Année & ""
           Application.FileSearch.FileType = msoFileTypeExcelWorkbooks

           If Application.FileSearch.Execut(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then

              For i = 1 To Application.FileSearch.FoundFiles.Count
                  Fournisseur = Split(Application.FileSearch.FoundFiles(i), "")
                  Call Fournisseur.AddItem(Nom(UBound(Fournisseur)))
              Next i

           End If
  
  End If


merci

12 réponses

Messages postés
87
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
28 mai 2013
1
Salut,

Effectivement c'est plus utilisé. Tu peux utiliser ceci :

' 0) On vérifie l'année pour le répertoire : '
  Dim Dj As Date, dateref As Date, ané As Integer
  Dim Fournisseur() As String
  Dim objFileSystem , objDoss ,objFich
  Dj = Date
  ané = Year(Dj)
  dateref = DateSerial(Year(Date), 6, 30)
      
  If (Dj > dateref) Then
  Année = ané & "_" & ané + 1
    ElseIf (Dj < dateref) Then
      Année = ané - 1 & "_" & ané
  End If

  ' 1) on crée le dossier dans toutes les cas (et s'il existe déjà, on gère) : '
  On Error Resume Next
  MkDir "C:\Historique" & Année & ""

  On Error GoTo 0
      
  ' 2) On regarde si le répertoire est vide : '
      
  If Dir("C:\Historique" & Année & "") = "" Then
    MsgBox " Vous n'avez pas encore passer de commande cette année . "
    MsgBox " Voulez vous voir le(s) contract(s) en cour ? ", vbYesNo + vbInformation
  ' 3) On regarde les fichier qu'il contient est on l'affiche : '
    ElseIf Dir("C:\Historique" & Année & "") <> "" Then
    
         [b] Set objFileSystem = CreateObject("Scripting.FileSystemObject")
          Set objDoss = objFileSystem.GetFolder("C:\Historique" & Année & "")

          If (objDoss.Files.Count > 0) Then
              For Each objFich In objDoss.Files
               If (InStr(1, objFich.Name, ".xls", 1) > 0) Then 'que les fichiers xls
                  Fournisseur.AddItem (objFich.Name)
              End If
          Next/b
     End If 
  End If



Est ce que ça résout ton soucis?

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.

Bonjour ,
Je te remerci pour ton aide.
Je ne sais pas si sa résoud mon probleme car il me dit maintenat comme méssage d'érreur :
erreur de compliation
Qualificateur incorrect
la il souligne Fournisseur:
Fournisseur.AddItem (objFich.Name)

C'est pourtant bien le nom de ma listbox.

Voila est encore merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour, biolo24fr,
- ta solution ne fonctionnerait pas sur ma machine où vbs (et donc fso) est inhibé (raison de sécurité retenue par de nombreux responsables).
- FSO s'avère de toutes manières lourd et plus lent que l'utilisation de la fonction Dir de VBA.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

Fais des recherches sur Dir et aussi le mot récursif, entre autres si tu veux fouiller les sous-répertoires.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

Bonjour ,
merci pour ta réponce
(P.S:
sur Dir et aussi le mot récursif, entre autres

Es que il y a des astuce que je devrait connaitre sur c'est deux fonction qui ne sont pas donnée dans l'aide en ligne
)
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Avec Dir seul, tu peux lire tous les fichiers d'un répertoire, accompagné d'un Loop. Une fonction récursive pourrait te permettre de lire chaque répertoire et chaque fichier de ces répertoires.

Tu pourrais trouver trouver des exemples sur ce site ou encore sur codyx.com ou sur le web


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

Bonjour ,
je te remercie pour toute tes précision

Bonjour ,

Comment je peut faire pour faire apparaitre dans une listbox tout les nom des dossier qu'il contient.

Merci
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tout dépend si tu veux aussi voir les sous-dossiers.
À ce moment, ça te prendrait un Function récursive qui se rappelle elle-même...

Fichier = Dir(Chemin, vbDirectory + vbArchive) 'recherche répertoires et fichiers archivés(non cachés ou système)
Do While Fichier <> ""
    If Left(Fichier, 1) <> "." Then 'ne rien faire avec "." et ".."
    'le code nécessaire
    End If
    Fichier = Dir   'passe au suivant
Loop


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

Bonjour ,
Je cherche a voir les sous dossier année de mon dossier historique.

le code que j'avait trouver et que l'on ma aider à mettre à jours je n'arrive pas à l'adapter a cette situation .

merci
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Regarde ce lien Ici

Tu trouveras différents liens qui contiennent des bouts de codes de différents langages. Ça pourrait aider.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

Bonjour ,
merci pour le lien