bug objet file item code pour lister fichiers (tous ou partie) dans sous/dossiers

armelle1303

XLDnaute Junior
bonsoir
un problème de déclaration d'objet, enfin c'est que vba me dit.
Tout d'abord ce code permet de lister ou tous les fichiers contenus dans un dossier et ses sousdos ou les fichiers contenant une partie d'un mot.

Dans le code ci dessous j'ai un bug avec FileItem

si je le déclare :
-en objet me renvoie erreur d'éxécution 424 : objet requis à la ligne For Each FileItem

- en variant, la ligne for fonctionne et me renvoie bien le chemin et le nom du fichier trouvé
mais à la ligne suivante (Cells...) me renvoie : erreur d'éxécution 424 : objet requis
enfin dans les 2 cas cela bug

j'ai réalisé ce code en mélangeant plusieurs exemples trouvés sur le forum (d'ailleurs merci à tous ceux qui ont posté sur ce sujet).
Mais je ne maitrise pas tout ce que j'ai recopié cela se confirme

je pense que cela vient des déclarations ou je n'ai pas mis de set... mais je ne sais pas quoi y mettre d'ailleurs.
je compte sur votre savoir pour me corriger ce code.

vous trouverez le code aussi dans le module de la PJ
Merci d'avance.

PHP:
Sub essai2()
   contenu1 = InputBox("contenu cherché?")
   If contenu1 = "tous" Then
   contenu = "*.*"
   Else
   contenu = contenu1 & "*"
   End If
   repertoire = ThisWorkbook.Path
   'MsgBox repertoire
   If contenu <> "" Then
     RechercheContenu repertoire, contenu
   End If
End Sub

Sub RechercheContenu(repertoire, contenu)

Dim ScanFic As Office.FileSearch
Dim Diag As String
Dim Nbr As Long
Dim I As Long
Dim DernLig As Long
'Dim FileItem As Object
'Dim FileItem
'Dim FileItem As Scripting.FileSystemObject
'Set FileItem = New Scripting.FileSystemObject

Set ScanFic = Application.FileSearch
With ScanFic
.NewSearch
.LookIn = repertoire
.SearchSubFolders = True
.Filename = contenu
.MatchTextExactly = False
.FileType = msoFileTypeAllFiles

If .Execute > 0 Then
Nbr = .Execute
Diag = Format(Nbr, "0 ""fichiers trouvés""")
Application.ScreenUpdating = False
Sheets(3).Select

DernLig = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
If DernLig >= 1 Then
   Sheets(3).Activate: Sheets(3).Select: Cells.Clear

End If

Cells(1, 1) = "Fichiers": Cells(1, 2) = "Créé": Cells(1, 3) = "Modifié"
Cells(1, 4) = "Chemins ": Cells(1, 5) = "Type produit et famille"

DernLig = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row + 1

For Each FileItem In .FoundFiles

MsgBox FileItem

    Cells(DernLig, 1) = FileItem.Name
    Cells(DernLig, 2) = FileItem.DateCreated
    Cells(DernLig, 3) = FileItem.DateLastModified
    ActiveSheet.Hyperlinks.Add Cells(DernLig, 4), FileItem.Path
    'typeProdFam=
    'Cells(DernLig, 5) =typeProdFam
    'Cells(DernLig, 5) =FileItem.ParentFolder
    DernLig = DernLig + 1

'Sheets(3).Cells(I, 1).Value = NomFic ' adapter le nom de la feuille
Next
If DernLig > 2 Then
    Range("A2:D" & DernLig).Select 'tri sur base chemin en Col(D)
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
ActiveSheet.Columns.AutoFit: Range("A1").Select
End If
Set FileItem = Nothing
MsgBox Diag
Else
MsgBox ("aucun fichier trouvé!")
End If
End With
End Sub
 

Pièces jointes

  • recap recherche fichier ou dossiers.zip
    14.1 KB · Affichages: 30

Staple1600

XLDnaute Barbatruc
Re : bug objet file item code pour lister fichiers (tous ou partie) dans sous/dossi

Bonsoir


C'est le mélange qui insupporte VBA ;)

Regardes plutôt les nombreux exemples fonctionnels relatifs à cet question nombreux sur le forum.

Exemple ici:
Lien supprimé

et ici Lien supprimé
 

armelle1303

XLDnaute Junior
Re : bug objet file item code pour lister fichiers (tous ou partie) dans sous/dossi

bonsoir Staple 1600

oui je me doute bien que mélanger n'est pas top mais si je l'ai fait c'est que je n'ai pas trouvé de code qui correspondait exactement à ce que je voulais (j'ai pourtant passé 2 soirées à chercher) sinon j'aurais fait du copier coller.

soit cela liste tous les fichiers ou ts le fichier avec une certaine extension
or je voudrais faire sur une partie du nom
donc ça j'ai trouvé mais cela renvoie les réponses dans une msgbox
or je voudrais le mettre dans une feuille excel avec juste le nom du fichier, date modif et date création ainsi que le chemin en hypertexte
et pour ça j'ai trouvé un exemple super aussi

mais voilà c'est en mélangeant les 2 que cela coince.

je vais reprendre aussi mon code pour vérifier une fois de plus et essayer de trouver l'erreur mais je comptais aussi sur l'aide du forum car je pense que l'erreur n'est pas très complexe mais dépasse mes connaissances de non pro du vba mais serai évidente pour un oeil averti.

je laisse mijoter tout cela et reprends dès demain en espérant avoir au quelques infos pour me guider.

Armelle
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet