Existence différents fichiers dans un dossier

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
SkillzZ
Membre fidèle
Membre fidèle
Messages : 210
Inscrit le : 12 avril 2017
Version d'Excel : 2010 FR

Message par SkillzZ » 28 mars 2018, 18:29

Bonjour à tous,

Mon souhait est le suivant:

Je cherche à réaliser une macro permettant de rechercher un bon nombre de fichiers dans un dossier (et ses sous-dossiers!). L’ensemble des noms des fichiers à rechercher sont notés dans la colonne B. J’aimerais que lorsqu’un fichier est détecté, la macro mette en vert la cellule de la colonne J, qui est sur la même ligne. Dans le cas inverse, cette cellule se met en rouge.
J’aimerais que cette macro fonctionne de la ligne 2 à 14000.

Je ne suis pas très loin de la solution mais je suis bloqué car ma macro manque de souplesse. Ce manque est dû au fait que parfois les noms de fichiers de la colonne B ne sont pas des noms de fichiers (caractère comme le ":" j'imagine), et donc elle plante. L'erreur que je reçois est généralement "52, le nom du fichier est erroné" ou quelque chose du genre. Par ailleurs j'aimerais bien avoir une seconde macro qui fait exactement la même chose que la première à la différence qu'elle ne recherche pas le nom exact du fichier inscrit dans les cellules de la colonne B, mais que si un fichier de mon dossier contient la chaîne de caractères inscrite dans une cellule de la colonne B alors elle compte le fichier comme présent, et met la cellule de la même ligne en colonne J, en vert.

Si quelqu’un a la capacité de m’aider sur ce sujet, je lui en serais très reconnaissant ! Merci beaucoup,

SkillzZ
Classeur1.xlsx
(13.96 Kio) Téléchargé 3 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'174
Appréciations reçues : 377
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 28 mars 2018, 19:24

bonsoir,

une solution (qui ne fonctionne que sur windows)
Sub aargh()
    rep = "d:\downloads\"    'répertoire de base à adapter
    a = lfr(rep, "*.model")    'adapter le filtre éventuellement
    With Sheets("feuil1")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dl
            .Cells(i, "J").Interior.Color = vbRed
            For j = LBound(a) To UBound(a)
                If InStr(a(j), .Cells(i, 2)) <> 0 Then .Cells(i, "J").Interior.Color = vbGreen: Exit For
            Next j
        Next i
    End With
End Sub

Function lfr(rep, filtre, Optional ByRef dict, Optional n = 0)
    If IsObject(dict) = False Then Set dict = CreateObject("scripting.dictionary")
    Set fso = CreateObject("scripting.filesystemobject")
    Set rep = fso.getfolder(rep)
    For Each repf In rep.subFolders
        lfr repf, filtre, dict, n + 1
    Next repf
    For Each f In rep.Files
        fn = f.Name
        If f.Name Like filtre Then
            dict.Add f.Path, 0
        End If
    Next f
    If n = 0 Then lfr = dict.keys
End Function
S
SkillzZ
Membre fidèle
Membre fidèle
Messages : 210
Inscrit le : 12 avril 2017
Version d'Excel : 2010 FR

Message par SkillzZ » 28 mars 2018, 22:23

Bonsoir h2so4,

Merci beaucoup pour ta réponse ! Je l'essaye dès demain.

Bonne soirée à toi,

SkillzZ
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message