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

Résolu
EnguerrandP - 13 mai 2013 à 15:03
 EnguerrandP - 16 mai 2013 à 10:39
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

biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
13 mai 2013 à 16:59
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.
3
EnguerrandP
13 mai 2013 à 17:07
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 mai 2013 à 17:21
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.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 mai 2013 à 14:38
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EnguerrandP
14 mai 2013 à 14:55
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
)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 mai 2013 à 15:20
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
0
EnguerrandP
14 mai 2013 à 15:23
Bonjour ,
je te remercie pour toute tes précision
0
EnguerrandP
15 mai 2013 à 16:04
Bonjour ,

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

Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
15 mai 2013 à 17:10
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
0
EnguerrandP
15 mai 2013 à 17:16
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
15 mai 2013 à 23:09
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
0
EnguerrandP
16 mai 2013 à 10:39
Bonjour ,
merci pour le lien
0
Rejoignez-nous