parcours fichiers dans un repertoire

parcours fichiers dans un repertoire - VB/VBA/VBS - Programmation

Marsh Posté le 05-06-2007 à 13:52:06    

bonjour,
je cherche à faire un programme qui parcourt des fichiers 1 par 1 dans un repertoire .
environ 500 fichier
 
merci

Reply

Marsh Posté le 05-06-2007 à 13:52:06   

Reply

Marsh Posté le 05-06-2007 à 14:40:28    

Reply

Marsh Posté le 05-06-2007 à 15:08:33    

merci

Reply

Marsh Posté le 05-06-2007 à 18:02:37    

En VBA , à adapter


'==================================================================================
'
'   Dans environnement VBA
'   Outils | Références COCHER Microsoft Scripting Runtime
'
'   Sinon VBScript téléchargeable à
'   http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp
'
'==================================================================================
 
Option Explicit
 
Dim NbFichiers As Long
Dim DossierOk As String
 
Const NomFichierRch = "Classeur*"
Const DossierRacine As String = "C:\Faq\FaqVba\Exemples"
Const NomFeuille As String = "Feuil1"
Const TypeFichier As String = "XLS"
 
Public Sub btnImport_QuandClic()
Dim Debut As Variant
Dim i As Long
Dim NomFichier As String
Dim NomDossier As String
 
    Debut = Time()
    Application.ScreenUpdating = False
    NbFichiers = 0
 
    DossierOk = BackSlashDossier(DossierRacine)
 
    ListeFichiersDansDossier DossierOk, True
 
    Application.StatusBar = "Terminé : " & Format((Time() - Debut) * 100000, "0.00" )
    Application.ScreenUpdating = True
End Sub
 
Private Function BackSlashDossier(ByVal TstDossier As String) As String
    If Right(TstDossier, 1) <> "\" Then TstDossier = TstDossier & "\"
    BackSlashDossier = TstDossier
End Function
 
Private Sub ListeFichiersDansDossier(ByVal NomDossierSource As String, ByVal InclureSousDossiers As Boolean)
Dim FSO As Scripting.FileSystemObject
Dim DossierSource As Scripting.Folder, SousDossier As Scripting.Folder
Dim Fichier As Scripting.File
Dim Extension As String
Dim r As Long, VerifNom As Boolean
 
    On Error GoTo erreurs
    Set FSO = New Scripting.FileSystemObject
    Set DossierSource = FSO.GetFolder(NomDossierSource)
 
    r = Range("A65536" ).End(xlUp).Row + 1
 
    For Each Fichier In DossierSource.Files
        Extension = UCase(FSO.GetExtensionName(Fichier))
        VerifNom = Fichier.Name Like NomFichierRch
        If Fichier.Name <> ThisWorkbook.Name Then
            If VerifNom Then
                If InStr(Fichier.Name, Chr(39)) > 0 Then Fichier.Name = Replace(Fichier.Name, Chr(39), "" )
                If UCase(TypeFichier) = Extension Then
                    With ShImport ' Feuille recueillant les données
                        .Cells(r, 1)= Fichier.Name
                        .Cells(r, 2)= Fichier.ParentFolder
                        .Cells(r, 3)= Fichier.DateCreated
                        .Cells(r, 4)= Fichier.Size
                        NbFichiers = NbFichiers + 1
                        r = r + 1
                    End With
                    Application.StatusBar = "Lecture noms : " & r
                End If
            End If
        End If
    Next Fichier
 
    If InclureSousDossiers Then
        For Each SousDossier In DossierSource.SubFolders
            ListeFichiersDansDossier SousDossier.Path, True
        Next SousDossier
        Set SousDossier = Nothing
    End If
 
    Set Fichier = Nothing
    Set DossierSource = Nothing
    Set FSO = Nothing
    Exit Sub
 
erreurs:
    Select Case Err.Number
        Case 76
            MsgBox "Dossier inexistant" & vbCrLf & "Modifier dans VBA le chemin" & vbCrLf & "Const Dossier = " & DossierRacine, vbOKOnly, "Dossier des Fichiers"
        Case Else
            MsgBox Err.Number & vbCrLf & vbCrLf & Err.Description
    End Select
End Sub


Message édité par kiki29 le 28-08-2008 à 15:44:17
Reply

Marsh Posté le 27-05-2011 à 13:55:02    

Bonjour, dans le même style, est-il possible d'implémenter cette liste avec uniquement les fichiers qui ont été modifiés depuis le dernier import.
J'ai cherché en vain sur des forums et codes mais sans résultats.
 
Merci d'avance

Reply

Marsh Posté le 27-05-2011 à 19:07:35    

Salut, indique dans une cellule par exmple F1 la date à prendre en compte
et ajoute

If Fichier.DateLastModified >= ShImport.Range("F1" ) Then

ou il faut dans la boucle de test


Message édité par kiki29 le 27-05-2011 à 20:40:40
Reply

Marsh Posté le 30-05-2011 à 17:09:05    

Bonjour kiki29, j'ai trouvé une solution:

Code :
  1. If DateDiff("D", Nomfichier.DateLastModified, Now) < 8 And Right(Nomfichier, 4) = ".csv" Or Right(Nomfichier, 4) = ".CSV" Then


 
Merci pour ton aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed