Nouveau code pour "Application.FileSearch"

marmotte18

XLDnaute Impliqué
Bonjour,

Dans Excel 2003, j'avais une macro qui fonctionnait fort bien et qui utilisait le code suivant :

Code:
With Application.FileSearch   
    .LookIn = Dossier
    .SearchSubFolders = True
End With

Avec Excel 2010, ma macro ne fonctionne plus et se bloque sur "With Application.File Search" avec le message "Erreur d'exécution 445 - Cet objet ne gère pas cette action".

Comment faut-il maintenant écrire le code sous Excel 2010 ?

Merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : Nouveau code pour "Application.FileSearch"

Bonsoir.
Pour bénéficier des avantage de la bibliothèque Scripting, il ne suffit pas de cocher la référence. Elle ne sert même strictement à rien si on persiste à déclarer As Object les variables destinées à accueillir les objets de types spécifiques qu'elle définit, ni en terme d'optimisation ni en terme de facilité de programmation.
Si vous ne savez quoi mettre à la place de Object, vous pouvez toujours taper devant Scripting suivi d'un point. Mais ce n'est pas obligatoire de le conserver pour que le type d'objet soit reconnu une fois que vous l'aurez choisi dans la liste. Sauf si vous pensez qu'il vous sera utile de vous rappeler, en relisant le code, que c'est un type de donnée objet défini par la bibliothèque Scripting.

Dans le code que vous montrez, je ne vois pas, avant sa tentative d'utilisation, d'initialisation de la variable SousDossier (qui devrait être déclaré As Folder au lieu de AS Object, à la rigueur As Scripting.Folder)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Nouveau code pour "Application.FileSearch"

Vous devriez avancer un peu avec ce code :
VB:
Sub test()
Dim NomDoss As String, NomFGén As String, i As Long, _
   FSO As New FileSystemObject, Dossier As Folder, Fichier As File
NomDoss = "S:\Arc\" & 2015 & "\" & "11_nov"
NomFGén = "ENE_BLI_MOY_10_MIN_201511*.*"
i = 1
On Error Resume Next
Set Dossier = FSO.GetFolder(NomDoss)
If Err Then MsgBox "Impossible d'accéder au dossier """ & _
   NomDoss & """.", vbCritical, "test": Exit Sub
On Error GoTo 0
For Each Fichier In Dossier.Files
   If Fichier.Name Like NomFGén Then
      i = i + 1
      Cells(i, 1) = Dossier.Name
      Cells(i, 2) = Fichier.Name
      End If
   Next Fichier
End Sub
 

stephanlaunay@canl.nc

XLDnaute Nouveau
Re : Nouveau code pour "Application.FileSearch"

Merci Dranreb,

Votre code m'a effectivement permit d'avancer rapidement.

Toutefois je ne comprends pas pourquoi lorsque je remplace :

NomDoss = "S:\Arc\" & 2015 & "\" & "11_nov"
NomFGén = "ENE_BLI_MOY_10_MIN_201511*.*"

par

NomDoss = "F:\donnees\sme\BCC rapports journaliers\" & 2015 & "\" & 12
NomFGén = "Courbes DP & Prod " & 31 & 12 & 2015 & ".xls"

Le programme scrute normalement tous les fichiers mais ne les affiche pas dans le tableau de la feuille 2.

Cela fonctionne très bien avec NomDoss = "S:\Arc\" & 2015 & "\" & "11_nov" et NomFGén = "ENE_BLI_MOY_10_MIN_201511*.*"

Voici votre code modifié pour mes besoins :

Sub test()
Dim NomDoss As String, NomFGén As String, i As Long, _
FSO As New FileSystemObject, Dossier As Folder, Fichier As File

'NomDoss = "S:\Arc\" & 2015 & "\" & "11_nov"
'NomFGén = "ENE_BLI_MOY_10_MIN_201511*.*"

NomDoss = "F:\donnees\sme\BCC rapports journaliers\" & 2015 & "\" & 12
NomFGén = "Courbes DP & Prod " & 31 & 12 & 2015 & ".xls"
i = 1
Sheets("Feuil2").Select
Range("A2").Select
Set Dossier = FSO.GetFolder(NomDoss)
For Each Fichier In Dossier.Files
If Fichier.Name Like NomFGén Then
i = i + 1
Cells(i, 1) = Fichier 'Fichier me donne le chemin complet pour ouvrir les fichiers ultérieurement dans la suite du programme
End If
Next Fichier
End Sub

Merci d'avance pour votre aide.

Stéphan
 

Dranreb

XLDnaute Barbatruc
Re : Nouveau code pour "Application.FileSearch"

Bonjour.
Ben c'est qu'aucun n'est Like "Courbes DP & Prod 31122015.xls".
D'ailleurs un seul pourrait y être vu qu'il n'y a aucun caractère "*" générique: celui qui porterait exactement ce nom.
 

stephanlaunay@canl.nc

XLDnaute Nouveau
Re : Nouveau code pour "Application.FileSearch"

Bonjour.
Ben c'est qu'aucun n'est Like "Courbes DP & Prod 31122015.xls".
D'ailleurs un seul pourrait y être vu qu'il n'y a aucun caractère "*" générique: celui qui porterait exactement ce nom.

Merci pour votre réactivité,

Je me suis fais la même réflexion hier lors de mes tests. J'ai essayé de mettre "*.*" à la place de ".xls" sans résultat.

Je testerai avec "*"

Le programme est lancer par une boite de dialogue demandant une date. Lorsque je rentre la date 31/12/2015, je souhaite que le programme me liste les fichiers de chaque jour du mois de décembre. Cela fonctionne avec un autre programme. Dans mon programme j'ai écris NomFGén = "Courbes DP & Prod " & J & M & A & "*.*" pour Jour, Mois et Année et "*.*" pour les fichiers xls.

Bien cordialement

Stéphan
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 236
dernier inscrit
Menni