Sélectionner fichiers Excel dans un dossier

Gasp73

XLDnaute Nouveau
Bonjour à tous,

J'ai écrit une macro car j'ai besoin de rechercher dans un dossier (et l'ensemble de ses sous dossier) tous les fichiers Excel qu'il contient afin de synthétiser les informations dans un seul fichier (celui contenant la macro).

J'ai trouvé un bout de code sur internet, qui marche à merveille, mais il me liste l'ensemble des fichiers (alors que je veux que les fichiers Excel).

Auriez vous une idée ?

Voici le code :

Code:
Sub MaJ_ListeAPA()
    Der_Lign = Range("E65536").End(xlUp).Row
    Chemin = "Q:\Fiabilisation\AJA - APA\APA"
    ListeFichiers Chemin
End Sub

Sub ListeFichiers(Repertoire As String)
    '
    'Nécessite d'activer la référence "Microsoft Scripting RunTime"
        'Dans l'éditeur de macros (Alt+F11):
        'Menu Outils
        'Références
        'Cochez la ligne "Microsoft Scripting RunTime".
        'Cliquez sur le bouton OK pour valider.
    
    Dim Fso As Scripting.FileSystemObject
    Dim SourceFolder As Scripting.Folder
    Dim SubFolder As Scripting.Folder
    Dim FileItem As Scripting.File
    Dim i As Long
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(Repertoire)
    
    'Récupère le numéro de la dernière ligne vide dans la colonne A.
    i = Range("A65536").End(xlUp).Row + 1
    
    'Boucle sur tous les fichiers du répertoire
    For Each FileItem In SourceFolder.Files
        'Inscrit le nom du fichier dans la cellule
        Cells(i, 1) = FileItem.Name
        'Ajoute un lien hypertexte vers le fichier
        ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 2), _
            Address:=FileItem.ParentFolder & "\" & FileItem.Name
        'Indique la date de création
        Cells(i, 2) = FileItem.DateCreated
        'Indique la date de dernier acces
        Cells(i, 3) = FileItem.DateLastAccessed
        'Indique la date de dernière modification
        Cells(i, 4) = FileItem.DateLastModified
        'Nom du répertoire
        Cells(i, 5) = FileItem.ParentFolder
        
        i = i + 1
    Next FileItem
    
    
    '--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
    For Each SubFolder In SourceFolder.subfolders
        ListeFichiers SubFolder.Path
    Next SubFolder
 
End Sub

Merci d'avance !!
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Sélectionner que des fichiers Excel dans un dossier

Bonjour


Rajoute un test sur l'extension du fichier dans ton code initial.
VB:
Sub ListeFichiers(Repertoire As String)
' ton code initial
For Each FileItem In SourceFolder.Files
    If FileItem.Name Like "?*.xls" Then
    MsgBox FileItem.Name, 'pour test
        'ton code initial
     End If
        i = i + 1
    Next FileItem
'ton code initial
End Sub
 
Dernière édition:

Gasp73

XLDnaute Nouveau
Re : Sélectionner fichiers Excel dans un dossier

Salut Staple1600 !!

C'est super ça marche parfaitement !! ;)
Par contre j'aimerais encore affiner ma "recherche" en ne choisissant que les fichiers créés après le 1er Aout 2012, j'ai fait ce code mais ça ne marche pas :

If Genre = APA Then
For Each FileItem In SourceFolder.Files
If FileItem.Name Like "?*.xls" And FileItem.DateCreated > 8 / 1 / 2012 Then
'Inscrit le nom du fichier dans la cellule
Cells(i, 1) = FileItem.Name
'Ajoute un lien hypertexte vers le fichier
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 2), _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
'Indique la date de création
Cells(i, 3) = FileItem.DateCreated
'Indique la date de dernier acces
Cells(i, 4) = FileItem.DateLastAccessed
'Indique la date de dernière modification
Cells(i, 5) = FileItem.DateLastModified
'Nom du répertoire
Cells(i, 6) = FileItem.ParentFolder

i = i + 1
End If
Next FileItem

Une idée ?

Merci beaucoup et bonne fin de journée !
 

Staple1600

XLDnaute Barbatruc
Re : Sélectionner fichiers Excel dans un dossier

Re

C'est logique que cela ne fonctionne pas rien qu'en voyant ceci ;)
If FileItem.Name Like "?*.xls" And FileItem.DateCreated > 8 / 1 / 2012 Then
Cela marche mieux comme cela ;)
If FileItem.Name Like "?*.xls" And CDate(Format(FileItem.DateCreated, "dd/mm/yyyy")) > DateValue("01/08/2012") Then
 
Dernière édition:

Gasp73

XLDnaute Nouveau
Re : Sélectionner fichiers Excel dans un dossier

Pourquoi ? Excel ne comprend pas ce format : "supérieur à la date mm/jj/aaaa" ???
J'ai essayé aussi 01/08/2012 (que Excel me corrige automatiquement en 1 / 8 / 2012) mais ça ne marche pas non plus...
 

Staple1600

XLDnaute Barbatruc
Re : Sélectionner fichiers Excel dans un dossier

Re

Regardes mon précédent message, j'ai ajouté une ligne de code VBA qui fonctionne

PS: Pour Excel et les dates voir dans l'aide VBA d'Excel (ou les infos disponibles à ce sujet sur le net)
Allez je t'évites de devoir chercher ;)

Date, type de données

Les variables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE
représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59.
Toute valeur de littéral date peut être attribuée à une variable de type Date.
Les littéraux date doivent être délimités par le signe #, par exemple #January 1, 1993# ou #1 Jan 93#.

Les variables de type Date affichent les dates au format de date abrégé reconnu par votre ordinateur.
Les heures s'affichent au format horaire (plage de 12 ou 24 heures) défini dans votre ordinateur.

Lorsque d'autres types de données numériques sont convertis en données de type Date,
les valeurs situées à gauche du séparateur décimal représentent la date,
tandis que celles situées à droite correspondent à l'heure.

Minuit est représenté par 0 et midi par 0,5.
Les nombres entiers négatifs représentent des dates antérieures au 30 décembre 1899.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 719
Messages
2 081 871
Membres
101 828
dernier inscrit
Did-Pan