Bonjour à tous
je n'arrive pas a trouver la solution pour compter le nombre de fichier *.sfc qui se trouve dans le dossier (et ces sous dossiers) "C:\APT\PROGRAM\LIGNES\UNITS"
Merci
Bonjour à tous
je n'arrive pas a trouver la solution pour compter le nombre de fichier *.sfc qui se trouve dans le dossier (et ces sous dossiers) "C:\APT\PROGRAM\LIGNES\UNITS"
Merci
un exemple a adatper
http://excel.developpez.com/faq/inde...riptingRuntime
Au lieu de lister dans une cellule il te suffit d'incrémenter un compteur
edit
Comme la fonction est recusive c'est un peu moins évident qu ce que je pensé
voici le code que j'ai utilisé, j'ai les même résultat qu'avec un clique droit/Propriétés sur le dossier
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 Sub testconte() Dim chemin As String, i As Long Dim objShell As Object, objFolder As Object, oFolderItem As Object Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&) On Error GoTo gester Set oFolderItem = objFolder.Items.Item On Error GoTo 0 chemin = oFolderItem.Path If chemin = "" Then Exit Sub Set oFolderItem = objFolder.Items.Item i=0 ListeFichiers chemin, i MsgBox "Il y a " & i & " fichiers" gester:: End Sub
Re edit tu peux remplacer la première partie par
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 Sub ListeFichiers(Repertoire As String, i As Long) ' '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 'Static 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 = 0 'Range("A65536").End(xlUp).Row + 1 'Boucle sur tous les fichiers du répertoire For Each FileItem In SourceFolder.Files 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, i Next SubFolder End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub testconte() Dim chemin As String, i As Long chemin = "c:\tondossier\" i=0 Set oFolderItem = objFolder.Items.Item ListeFichiers chemin, i MsgBox "Il y a " & i & " fichiers" End Sub
Bonjour à tous !
Et en plus court, avec une fonction que j'apprécie beaucoup:
Un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub recherche() With Application.FileSearch .NewSearch .RefreshScopes .LookIn = "C:\APT\PROGRAM\LIGNES\UNITS" 'Ton répertoire .Filename = "*.sfc" .SearchSubFolders = True 'Cherche dans les sous-répertoires ! .Execute For Ctr = 1 To .FoundFiles.Count 'Tu fais ce que tu veux Next End With End Subsuffira dans ton cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox(.FoundFiles.Count)
Qu'en dis-tu ?
A plus tard![]()
Ceci constituera mon unique réponse, pour justifier l'utilisation de MA solution à la place de celle de Dead
Edit : en fait il semble que notre ami Dead risque d'être très mais alors très triste en apprenant ceci
SourceL'objet FileSearch n'étant plus supporté dans Office2007
(Mais bon ca solution reste bien plus pratique)
HéHé, reviens-nous, on fait tous ça
En revanche, ma solution ne sera pas fonctionnelle avec Excel 2007. Il faudra alors passer par ClassFileSearch. Si c'est ton cas, fais une petite recherche rapide sur le forum, cela revient exactement au même.
A+
Ha le temps que j'édite il avait posté (et pourtant j'avais rafraichi) et en plus il était déjà au courant
Bon au moins tu a le lien pour savoir comment le remplacer si tu doit être compatible avec 2007
Partager