Vérifier si un sous dossier n'est pas vide avec une partie de son nom

Bonjour le forum,

J'ai besoin de votre aide vraiment :(

J'ai un fichier Excel qui contient des numéros uniques, ces numéros constituent la première partie des noms des dossiers dans un répertoire.

Par exemple dans le fichier Excel on a la numéro "123", on trouve dans le répertoire un dossier nommé "123-XXX".

Dans tous les dossiers on a un sous dossier nommé "sécurité". Souvent dans le sous dossier "sécurité" on a des autres sous dossiers souvent non. Mon objectif c'est de vérifier que si parmi les sous dossiers du sous dossier "sécurité", il y 'a un un sous dossier nommé "Amiante", si oui s'assurer qu'il n'est pas vide.

Est ce que quelqu'un peut m'aider sur le macro :)

Merci d'avance.

J'ai trouvé cette macro mais elle ne marche pas:

Sub VerifierDosAmiante()
Dim dossier As String, chemin As String, num As String, pasvidefic As String
Dim dossier1 As String, num1 As Range, ok As Range, dl As Long
chemin = "C:\Users\fgp\DosTest\" 'On définit le chemin du fichier
dl = Sheets("GE S").Cells(Rows.Count, 1).End(xlUp).Row
Set num1 = Sheets("GE S").Range("A2")
dossier1 = "\Securite\Amiante\"
For i = 2 To dl
num = num1.Value 'on définit le numéro d'immobilisation contenu dans le fichier

    fichier = Dir(chemin & num & "*" & dossier1, vbDirectory Or vbHidden) 'cherche le fichier dans le chemin correspondant
    Do While fichier <> ""
    If fichier <> "." And fichier <> ".." Then Exit Do
    fichier = Dir
 Loop
 pasvidefic = Dir(fichier, vbNormal Or vbHidden)
 If fichier & pasvidefic = "" Then
   Sheets("GE S").Range("D" & i) = "Not OK"
 Else
   Sheets("GE S").Range("D" & i) = "OK"
 End If
Set num1 = num1.Offset(1, 0) ' on passe au numéro de fichier suivant
num1.Select
Next
End Sub

Qqn a une idée :)

Bonjour,

Voici un essai avec une fonction censée renvoyer vrai si le répertoire ...\mot-clé\Securite\Amiante contient au moins un fichier ou un dossier et faux sinon (ou si le répertoire n'existe pas) :

function FolderAmianteHasContent(KeyWord as string, optional sParentPath as string = "C:\Users\fgp\DosTest\") as boolean
set fso = createobject("Scripting.filesystemobject")
set fd = fso.getfolder(sParentPath)
for each sfd in fd.subfolders
    if sfd.name like Keyword & "*" then
        sFinalPath = sfd.path & "\Securite\Amiante"
        if fso.folderexists(sFinalPath) then
            with fso.getfolder(sFinalPath)
                FolderAmianteHasContent = (.files.count + .subfolders.count > 0)
                exit function
            end with
        end if
    end if
next sfd
end function

Veillez à bien respecter les noms en dur dans le code.

Cette fonction peut être directement utilisée depuis la feuille excel en principe.

Cdlt,

Bonjour,

Merci infiniment pour votre aide.

Cependant, j'ai essayé d'utiliser la fonction mais elle ne retourne rien :(

Merci d'avance.

Bonjour,

Comment ça elle ne retourne rien ?

Cette fonction retourne forcément une valeur normalement : faux, vrai ou une erreur.

Vous l'avez essayé sur une feuille excel ? Comme ceci :

=FolderAmianteHasContent("123")

pour tester les sous-dossiers du sous-dossier commençant par 123.

Cdlt,

Merci infiniment :)

Le problème est résolu

Par contre, si je vais qu'il vérifie si le dossier n'est pas vide s'il contient un fichier Excel, quelle modification à faire?

Merci une autre fois :)

Bonjour,

Désolé, je ne comprends pas bien. Quel dossier ?

Sachant qu'il me parait compliqué de comprendre quelque chose avec une fonction qui ne renvoie que vrai ou faux en effectuant une demi-dizaine de tests.

Cdlt,

Rechercher des sujets similaires à "verifier dossier pas vide partie nom"