Recherche de dossier vide

  • Initiateur de la discussion Initiateur de la discussion yoyovento
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yoyovento

Guest
Bonjour à tous,

Voilà je suis à la recherche d'une macro sous VBA excel qui me listerait les dossiers vide (sans fichier 😛) depuis un répertoire. J'ai bien essayé

If .Execute() > 0 Then
Cells(7, 2) = .FoundFiles.Count
Cells(7, 3) = "fichiers"
For i = 1 To .FoundFiles.Count
lg2 = Len(.FoundFiles(i))
Cells(8 + i, 2) = Right(.FoundFiles(i), lg2 - lg - 1)
Next i
Else
MsgBox "0 fichier"
End If

Mais ca ca permet de lister les fichiers et pas de lister les dossiers vides. Mon but étant de voir où il manque des informations soit où il y a un dossier vide.

J'espére avoir était clair 😀

Merci
 
Re : Recherche de dossier vide

Super ta macro, ca marche pas mal, le seul hic est quand je scanne un dossier il me met "chemin d'accés introuvable..." pour "If Fldr.Size = 0 Then", as tu une idée ?
Cela dit j'ai essayé ailleurs et ca marche sur d'autres dossiers.😎
 
Re : Recherche de dossier vide

J'ai regardé les 9 pages mais sans succés
en fait si j'ai bien compris la macro scanne le dossier si il est vide (taille=0) ca va dans les sous dossiers (listSubsArr) pour voir si ils sont vides.
C'est pas tout a fait ca que je cherche car un dossier non vide peut avoir des sous dossiers vides un peu comme ca :
dossier┬ sous-dossier1┬ fichier1
aaaaaaaaaaaaaaaaaa├ fichier2
aaaaaaaaaaaaaaaaaa├ ....
aaaaaaaaaaaaaaaaaa├ sous-sous-dossier1┬ fichier3
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa└ fichier4
aaaaaaaaaaaaaaaaaa├ sous-sous-dossier2 (vide)
aaaaaa├ sous-dossier2 (vide)
aaaaaa└ fichier3

ce qui me donnerai :
dossier/sous-dossier1/sous-sous-dossier2
dossier/sous-dossier2

C'est tout à fait le même problème si ?
 
Dernière modification par un modérateur:
Re : Recherche de dossier vide

Sub ListSubsArr(Rep As String)

Dim fso As FileSystemObject
Dim StFldr As Folder
Dim Fldr As Folder
Dim aOutput() As String
Dim lCount As Long

Columns(1).Cells.Clear

Set fso = New FileSystemObject
Set StFldr = fso.GetFolder(Rep)
lCount = lCount + 1
ReDim aOutput(1 To lCount)


For Each Fldr In StFldr.SubFolders
If Fldr.Size = 0 Then
SFoldersArr Fldr, aOutput, lCount
End If
Next Fldr

ActiveSheet.Range("A1").Resize(UBound(aOutput), 1).Value = Application.Transpose(aOutput)

Set StFldr = Nothing
Set fso = Nothing

End Sub
______________________________________________________________________
Sub SFoldersArr(MFldr As Folder, ByRef vOutput As Variant, ByRef lCount As Long)

Dim SFldr As Folder

If lCount > UBound(vOutput) Then
ReDim Preserve vOutput(1 To lCount + MFldr.SubFolders.Count)
End If

vOutput(lCount) = MFldr.Path

lCount = lCount + 1

If MFldr.SubFolders.Count > 0 Then
For Each SFldr In MFldr.SubFolders
If SFldr.Size = 0 Then
SFoldersArr SFldr, vOutput, lCount
End If
Next SFldr
End If

End Sub
_____________________________________________________
Sub test()
'ici mettre le nom et le chemin du répertoire à traiter
ListSubsArr ("C:\Temp")
End Sub



Je ne sais pas mais est ce que l'erreur ne serait pas là (en rouge)? Car il ne fait qu'une fois cette boucle alors pourquoi faire un incrément et redimensionner de 1 à 1 ?
 
Re : Recherche de dossier vide

Merci pour ton aide lol, j'ai fait ca :

Private Sub CommandButton1_Click()
Dim fso As FileSystemObject
Dim StFldr, Fldr,SFldr As Folder
Dim aOutput() As String
Dim lCount As Long
Set fso = New FileSystemObject
Rep = ActiveSheet.Range("B2")
Set StFldr = fso.GetFolder(Rep)

Columns(3).Cells.Clear
lCount = 1
ReDim aOutput(1 To 1000)

For Each Fldr In StFldr.SubFolders
a = Fldr
If Fldr.Size = 0 Then
aOutput(lCount) = Right(Fldr.Path, Len(Fldr.Path) - Len(ActiveSheet.Range("B2")) - 1)
lCount = lCount + 1
Else
For Each SFldr In Fldr.SubFolders
If SFldr.Size = 0 Then
aOutput(lCount) = Right(SFldr.Path, Len(SFldr.Path) - Len(ActiveSheet.Range("B2")) - 1)
lCount = lCount + 1
End If
Next SFldr
End If
Next Fldr

ActiveSheet.Range("C4") = lCount - 1 & " dossiers vides"
ActiveSheet.Range("C6").Resize(UBound(aOutput), 1).Value = Application.Transpose(aOutput)
Set StFldr = Nothing
Set fso = Nothing
End Sub


Avec le chemin en cellule B2.
Le probléme est que je scanne sur seulement 2 niveaux, est ce que tu sais comment augmenter la profondeur ?
Où je peux trouver des infos sur StFldr et ses confréres ? J'ai cherché dans l'aide Visual mais j'ai rien trouvé.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
701
Réponses
6
Affichages
880
Réponses
9
Affichages
1 K
Retour