IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche de fichiers sur la base de différents critères [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Recherche de fichiers sur la base de différents critères
    Bonjour à tous,

    étant passée à Office 2010 la méthode FileSearch ne marche bien évidement pas. J'ai lu les Post sur l'utilisation de ClasseFileSearch mais çà ne résout pas mon problème!
    je me sers de ma macro pour rechercher les fichiers d'un répertoire :
    - dont le nom contient "affecipr"
    - quelque soit le type
    - dont la date de modification est comprise entre 2 dates précises.
    La macro proposée ne permet pas les filtres d'après ce que j'ai lu...

    Si vous pouviez m'aider!

    Merci par avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste avec FSO. Cette fonction retourne les trois dates qui consernent le fichier, date de création, dernier accès et dernière modif. Lance la proc "Test" après avoir adapté le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    Function ProprietesFichier(Dossier As String, _
                               Fichier As String) As String()
     
        Dim Fso As Object
        Dim Fich As Object
        Dim Tbl() As String
     
        'le fichier doit exister sinon, la fonction
        'retourne "Fichier introuvable"
        If Dir(Dossier & Fichier) <> "" Then
     
            Set Fso = CreateObject("Scripting.FileSystemObject")
            Set Fich = Fso.GetFile(Dossier & Dir(Dossier & Fichier))
     
            With Fich
     
                ReDim Tbl(1 To 3)
     
                Tbl(1) = .DateCreated
                Tbl(2) = .DateLastAccessed
                Tbl(3) = .DateLastModified
     
            End With
     
            ProprietesFichier = Tbl()
     
        Else
     
            ReDim Tbl(1 To 1)
            Tbl(1) = "Fichier introuvable"
            ProprietesFichier = Tbl()
     
        End If
     
     
        Set Fich = Nothing
        Set Fso = Nothing
     
    End Function
     
    Sub Test()
     
        Dim Tbl() As String
        Dim I As Integer
     
        Tbl = ProprietesFichier("F:\", "*affecipr*.xls")
     
        For I = 1 To UBound(Tbl)
     
            Debug.Print Tbl(I)
     
        Next I
     
    End Sub
    Hervé.

  3. #3
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Sinon, la foncion Dir permet l'utilisation des Jokers ( * ou ?), assez pratique dans ces cas de figure, des exemples existent en faisant une recherche sur le forum

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour Hervé, Didier et merci de vos réponses

    je vais tester voire en cumulant les deux.

    je vous tiens au courant.

    bonne journée
    Catherine.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    et bien voilà j'ai fait un mix pour obtenir un code qui marche mais je regrette mon FileSearch!

    Merci et bonne journée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Explicit
    Option Base 1
    Public Type InfosResultFichiers
        strFileName As String
        DateLastModified As Date
    End Type
    Sub test()
     
     
     
        Dim Fso As Object
        Dim Fich As Object
        Dim Dossier, Fichier, NomDossier As Object, SousDossier As Object
        Dim objFichier As Object
        Dim TabFiles() As InfosResultFichiers
        Dim lngFoundFilesCount As Long
        Dim poste As InfosResultFichiers
        Dim valeur As Integer
        Dim z, i As Integer
     
     
        lngFoundFilesCount = 0
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Dossier = "P:\XR38\Data\In\PXR3801\"
        Fichier = "kaudit_affecipr_*"
     
        'Les fichiers Kaudit doivent exister sinon gros problème
     
        If Dir(Dossier & Fichier) = "" Then
            z = MsgBox("Aucun fichier Kaudit trouvé!!!", vbOKOnly, "", "", "")
        End If
     
        Set NomDossier = Fso.GetFolder(Dossier)
     
        'Boucle sur les fichiers du répertoire et chargement en table des fichier Kaudit
        For Each objFichier In NomDossier.Files
     
            'Vérifie l'extension du fichier
            If objFichier.Name Like "*.csv" Then
     
     
                If Left(objFichier.Name, 16) = "kaudit_affecipr_" Then
                    'Redimensionne le tableau pour ajouter un nouvel élément
                    lngFoundFilesCount = lngFoundFilesCount + 1
                    ReDim Preserve TabFiles(lngFoundFilesCount)
     
                    'Nom fichier
                    TabFiles(lngFoundFilesCount).strFileName = objFichier.Name
                    'Date de création ou dernière modification
                    TabFiles(lngFoundFilesCount).DateLastModified = objFichier.DateLastModified
                    End If
            End If
        Next objFichier
     
    'tri de la table sur dates modif
         Do 'tri décroissant
            valeur = 0
     
            For i = 1 To UBound(TabFiles) - 1
                If TabFiles(i).DateLastModified < TabFiles(i + 1).DateLastModified Then
                    poste = TabFiles(i)
                    TabFiles(i) = TabFiles(i + 1)
                    TabFiles(i + 1) = poste
                    valeur = 1
                End If
            Next i
        Loop While valeur = 1
     
     
     
     
     
     
        Set Fso = Nothing
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment rechercher des fichiers sur un disque.
    Par vijeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/08/2017, 10h17
  2. recherche sur un fichier sur une base de temps
    Par agathe04 dans le forum Scilab
    Réponses: 4
    Dernier message: 06/11/2013, 08h25
  3. [C#]recherche de fichiers sur un server
    Par batosai dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/10/2006, 18h17
  4. Recherche de Fichiers sur tout le disque
    Par bonjour69 dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 23/09/2006, 21h23
  5. Réponses: 3
    Dernier message: 20/04/2006, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo