cello3135
Messages postés12Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention 3 janvier 2007
-
2 janv. 2007 à 11:41
cello3135
Messages postés12Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention 3 janvier 2007
-
2 janv. 2007 à 19:19
Bonjour à tous,
Ma question est assez simple je pense mais étant encore vraiment débutant, j'ai quelque peu de mal à résoudre mon problème. J'aimerais en effet récupérer dans une feuille Excel une liste de fichiers dont le type (Word, ppt, txt...) dépend de ce que j'ai coché dans des checkbox.
Voilà le code actuel qui me permet de récupérer tous les fichiers (*.*) d'un répertoire donné.
Sub ListFilesInFolder(bIncludeSubfolders As Boolean)
Dim fs As FileSearch
Dim fso As FileSystemObject
Dim wksDest As Worksheet
Dim i As Integer
Dim oFile As Scripting.File
Dim Dossier As Object
Dim NomDossier As String
Dim Nb&
Dim Field_Denomb As TextBox
Set fs = Application.FileSearch
Set fso = CreateObject("Scripting.FileSystemObject")
Set wksDest = Worksheets("Listing des Fichiers")
wksDest.Range("A1:IV65536").ClearContents
NomDossier = ChoixDossierFichier("")
If NomDossier = "" Then Exit Sub
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Set oFile = fso.GetFile(.FoundFiles(i))
wksDest.Cells(i + 1, 1) = oFile.Name
wksDest.Cells(i + 1, 2) = oFile.ParentFolder.Path
wksDest.Cells(i + 1, 3) = oFile.Size / 1024
wksDest.Cells(i + 1, 4) = oFile.Type
wksDest.Cells(i + 1, 5) = oFile.DateCreated
wksDest.Cells(i + 1, 6) = oFile.DateLastModified
wksDest.Cells(i + 1, 7) = oFile.DateLastAccessed
wksDest.Cells(i + 1, 8) = oFile.Path
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub
------------------------------------------------------------------------------------------------------------------------------
J'ai créé plusieurs Checkbox et j'aimerais que suivant ce qui est coché, mon code me ramène des .doc ou des .ppt, ou des .xls...
J'ai essayé d'introduire la commande If CheckBox1.Value True then ... .filename '*.doc' ... mais il semblerait qu'il y ait une erreur avec la commande With.
De plus, j'aimerais qu'une checkbox corresponde à plusieurs types d'extension (par exemple .doc et .rtf). Puis-je utiliser un .filename '*.doc' or .filename '*.rtf'?
Enfin, est-il possible non plus d'insérer tous les résultats dans la même et unique worksheet 'Listing des fichiers' mais de créer par Checkbox un onglet distinct (par exemple un onglet pour la liste des fichiers .doc et .rtf, un autre pour les .xls et .csv ... en bref, un onglet par checkbox cochée) ?
Merci par avance pour votre aide et très bonne année 2007 à tous!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 janv. 2007 à 15:21
Salut,
Si j'ai bien compris
Puisque tu souhaites utiliser plusieurs Feuilles pour tes résultats (feuille dépendant de checkbox cochée ou non)
Pourquoi ne pas mieux découper ta procédure? et les appelés si les checkbox sont cochée. je pense à quelque chose du style.
=> Ce qui suit n'est qu'une ébauche mais cela devrait te donner des idées.
NOTE: Il faut teste si la feuille WsName (XLS, CSV...) existe sinon il faut la creer
Private Sub CommandButton1_Click()
If CheckBox1.Value Then Call ListFilesInFolder(True, "*.doc;*.rtf", "C:\Test", "Doc, Rtf")
If CheckBox2.Value Then Call ListFilesInFolder(True, "*.xls;*.csv", "C:\Test", "XLS, CSV")
'[...]
End Sub
Sub ListFilesInFolder(bIncludeSubfolders As Boolean, Filter As String, NomDossier As String, WsName As String)
Dim fs As FileSearch
Dim fso As FileSystemObject
Dim wksDest As Worksheet
Dim i As Integer
Dim oFile As Scripting.File
Dim Nb&
Set fso = New FileSystemObject
Set wksDest = Worksheets(WsName)