Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1732 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recensement de fichiers en utilisant VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recensement de fichiers en utilisant VBA

n°1743418
skan_one
Posté le 09-06-2008 à 12:50:28  profilanswer
 

Bonjour,
 
Je cherche à utiliser VBA pour recenser des fichiers EXCEL se situant dans un même dossier.
Les noms de ces fichiers sont typés selon l'info qu'ils contiennent :
ex: XXX_blablabla.xls   XXX étant le champ qui défini le type d'info à chercher
Je veux être capable de lister tous les fichiers Excel selon les 3 lettres du champ (XXX)  
J'ai déjà trouver comment lister des fichiers dans un même répertoire:
 

Citation :

Dim stRep 'Nom du répertoire à parcourir
Dim oFSO,oF1
Set oFSO = CreateObject("Scripting.FileSystemObject" )
stRep = "C:\Tmp"
If oFSO.FolderExists(stRep) Then
 For each oF1 in  oFSO.GetFolder(stRep).Files
   Wscript.Echo oF1.Name  
 Next
End If


 
C'est un début à mon problème, cependant 2 problèmes se posent:
1 - ce script liste TOUS les fichiers sont distinctions aucune, j'envisage donc
de poser une condition avant d'écrire le nom du fichier.  
Comment faire un masque pour pouvoir poser ma condition if en ne prenant en compte que les 3 premieres lettres du nom du fichier ?
2 - Ce Wscript.Echo ne fonctionne pas. "Erreur 424 Objet requis"
 
Merci de votre aide par avance !

mood
Publicité
Posté le 09-06-2008 à 12:50:28  profilanswer
 

n°1743449
kiki29
Posté le 09-06-2008 à 14:05:09  profilanswer
 

Salut,à adapter


'------------------------------------------------------------
'
'  VBE Outils/Références Cocher Microsoft Scripting Runtime
'
'------------------------------------------------------------
 
Option Explicit
 
Public Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Public Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
 
Dim Cpt As Long
 
'   Const TypeFichier As String = "##.xls"
'   Const TypeFichier As String = "trans_###_########.txt"
Const TypeFichier As String = "*.xls"
 
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
            Cpt = 0
            Application.StatusBar = ""
            DoEvents
            Lire .SelectedItems(1)
        End If
    End With
End Sub
 
Private Sub Lire(sPath As String)
Dim Dep As Currency, Fin As Currency, Freq As Currency
Dim Coll As Collection
Dim i As Long
 
    Application.ScreenUpdating = False
    QueryPerformanceCounter Dep
    Set Coll = New Collection
 
    ShFichiers.Cells.Clear
    ListeFichiers sPath, Coll, True
 
    For i = 1 To Coll.Count
        ShFichiers.Range("A" & i) = Coll.Item(i)
    Next i
 
    Set Coll = Nothing
 
    QueryPerformanceCounter Fin: QueryPerformanceFrequency Freq
    With Application
        ShFichiers.Range("B1" ).Select
        .StatusBar = "Terminé : " & Cpt &  " / " & Format(((Fin - Dep) / Freq), "0.00 s" )
        .ScreenUpdating = True
    End With
End Sub
 
Private Sub ListeFichiers(sChemin As String, Coll As Collection, Recursif As Boolean)
Dim FSO As Scripting.FileSystemObject
Dim Dossier As Scripting.Folder
Dim SousDossier As Scripting.Folder
Dim Fichier As Scripting.File
 
    Set FSO = New Scripting.FileSystemObject
    Set Dossier = FSO.GetFolder(sChemin)
 
    For Each Fichier In Dossier.Files
        If UCase(Fichier.Name) Like UCase(TypeFichier) Then
            Cpt = Cpt + 1
            Coll.Add Fichier.Path
            Application.StatusBar = Cpt  
        End If
    Next Fichier
 
    If Recursif Then
        For Each SousDossier In Dossier.SubFolders
            ListeFichiers SousDossier.Path, Coll, True
        Next SousDossier
    End If
 
    Set Dossier = Nothing
    Set FSO = Nothing
End Function


Message édité par kiki29 le 09-06-2008 à 14:12:03

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recensement de fichiers en utilisant VBA

 

Sujets relatifs
[Access VBA] Créer une requête[Excel VBA]_Importer un fichier texte
Besoin d'aide programme VBA cellulesDebutant VBA
Excel VBA - ajouter un menuimport de fichiers d'un autre répertoire
masquage erreur #valeur sous VBA Excel[VBA] Petite Question sur les Array's
[Résolu][XLS] Raffraichissement d'1 cellule utilisant une fonction VBA 
Plus de sujets relatifs à : Recensement de fichiers en utilisant VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR