Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 11/07/2005, 00h07   #1 (permalink)
gabriel
Guest
 
Messages: n/a
Par défaut Méthode FileSearch

Bonsoir à tout le Forum,

N'étant pas encore féru de VBA, je rencontre un problème avec 'FileSearch'.

Je désire trouver tous les fichiers .doc d'un répertoire contenant un certain mot et j'obtiens une fenêtre fort désagréable me disant que ce programme à effectué une opération non conforme etc...
Le détail est que Excel a causé une défaillance dans le module kernel32 etc..

Voici le code utilisé:

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
Sub ChercheFichiersXl()

Dim FS As Office.FileSearch
Dim strChemin As String
Dim varNomFichier As Variant
Dim strMessage As String
Dim Compteur As Long

Set FS = Application.FileSearch
strChemin = 'D:\\Mes Documents Ma BOITE\\Factures\\factures 2005'

With FS
.NewSearch
.LookIn = strChemin
.SearchSubFolders = True
.FileType = msoFileTypeWordDocuments
.TextOrProperty = 'Récupération'
.MatchTextExactly = True
.LastModified = msoLastModifiedAnyTime
Compteur = .Execute

strMessage = Format(iCompteur, '0 ''Fichier(s) trouvé(s)''')

For Each varNomFichier In .FoundFiles
strMessage = strMessage & vbCr & varNomFichier
Next varNomFichier
MsgBox strMessage
End With

End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''

Si je commente les lignes '.TextOrProperty = 'Récupération' et '.MatchTextExactly = True alors cela fonctionne mais ça me renvoie évidemment tous les fichiers!

Est ce que je m'y prend mal?
Si vous pouviez m'éclairer ce serait épatant!
En vous remerciant par avance.

Gabriel
  Réponse avec citation
ANNONCES
Vieux 11/07/2005, 09h02   #2 (permalink)
XLDnaute Accro
 
Date d'inscription: février 2005
Localisation: Arras
Version Excel : Excel 2003 (PC)
Messages: 1 422
Envoyer un message via MSN à dg62
Par défaut Re:Méthode FileSearch

Bonjour Gabriel

Vous dites :

'Si je commente les lignes '.TextOrProperty = 'Récupération' et '.MatchTextExactly = True alors cela fonctionne mais ça me renvoie évidemment tous les fichiers! '

je ne comprends pas bien votre problème !
Vous souhaitez trouver tous les .doc dans le chemin spécifié qui contiennent 'Récupération' ?

dans ce cas vous êtes obligé de spécifié récupération dans TextorProperty.

Mais pourquoi dites-vous 'ça me renvoie évidemment tous les fichiers! '

je viens de faire un essai et j'ai obtenu le résultat escompté.
une premiere recherche avec class* retour 3 fichiers
une deuxieme recherche avec classeur retour 1 fichier
La procédure fonctionne correctement et renvoie les bons résultats.

Cordialement
__________________
@+

dg62 est déconnecté   Réponse avec citation
Vieux 11/07/2005, 22h49   #3 (permalink)
gabriel
Guest
 
Messages: n/a
Par défaut Re:Méthode FileSearch

Bonsoir à nouveau à tous et merci de vous être penchés sur mon problème.

Effectivement si je commente les 2 lignes en question la recherche me trouve tous les .doc du répertoire, mais mon problème est que si je met un filtre avec '.TextOrProperty' pour trouver ceux qui contiennent seulement le mot 'Récupération' Excel me cause une opération non conforme (dans un module Kernel) et demande à être fermé.
La procédure n'aboutit donc pas et je suis bien ennuyé!

Malgré ma prose VBA de débutant je n'ai jamais eu d'erreur de ce genre. La fenêtre débogage OK ça m'arrive trop souvent, mais Kernel ça je n'y comprend rien!

D'après vous le code serait bon. J'en déduis que j'aurais alors un problème avec Excel, mais comment faire dans cette éventualité?

En vous remerciant de m'avoir répondu.

Gabriel
  Réponse avec citation
Vieux 11/07/2005, 23h38   #4 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 830
Par défaut Re:Méthode FileSearch

bonsoir Gabriel , bonsoir Didier

ce lien concernant les bugs de la propriété 'FileSearch' pourra peut etre t'aider

http://www.excel-downloads.com/html/...5595_75595.htm


sinon ci dessous une autre methode que tu pourras adapter pour boucler sur les fichiers d'un reperetoire et filtrer les documents à récuperer



Code:
Sub listerFichiersRepertoire()
Dim Dossier As String

Dossier = 'C:\\Documents and Settings\\michel\\dossier\\general\\excel'

ListFilesInFolder Dossier, True

End Sub


Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean)
' adapté de Ole P Erlandsen
'necessite d'aviter la reference Microsoft Scripting RunTime :
'dans l'editeur de macros
'Menu Outils
'References
'coches la ligne 'Microsoft Scripting RunTime'
'cliques sur OK pour valider
'
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim XFile As Scripting.File

Set Fso = CreateObject('Scripting.FileSystemObject')
Set SourceFolder = Fso.GetFolder(SourceFolderName)

For Each XFile In SourceFolder.Files
If XFile.Name Like 'Récupération' And _
XFile.Type = 'Document Microsoft Word' Then _
MsgBox XFile.Name
Next XFile

If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, True
Next SubFolder
End If

End Sub


bonne soiree
MichelXld

Message édité par: MichelXld, à: 11/07/2005 22:39
MichelXld est déconnecté   Réponse avec citation
Vieux 12/07/2005, 01h07   #5 (permalink)
gabriel
Guest
 
Messages: n/a
Par défaut Re:Méthode FileSearch

Bonsoir Michel,

merci de t'occuper de mes ennuis si tard. Je regarderai tes explications en détail et essaierai de les mettre en application (ma formation n'a rien à voir avec le monde de l'informatique) à une heure moins tardive car je suis frigoriste et demain je serai sur les chantiers (je te laisse imaginer le rush en été!).

Ca me rassure de ne pas être le seul ennuyé avec cette méthode, mais sache que si je lance la recherche sur le même répertoire avec le dossier voisin ('Factures 2004') la procédure fonctionne parfaitement avec le filtre et me retourne tous les fichiers ad hoc. Intrigant non?

Les fichiers .doc contenus dans ('Factures 2004') ont été créés par macro Excel 2000, tandis que ceux de ('Factures 2005') l'ont été pour partie par macro Excel XP avec le même code. Est-ce une piste?

De toutes façons c'est sympa que tu soit là pour me filer un coup de main et t'en remercie encore.Bonne nuit.

Cordialement.

Gabriel
  Réponse avec citation
Vieux 12/07/2005, 23h39   #6 (permalink)
gabriel
Guest
 
Messages: n/a
Par défaut Re:Méthode FileSearch

Bonsoir à tout le Forum et à Michel

J'ai testé ton code mais ne possèdant pas la référence MicrosoftScritingRuntime (Office 9.0), la procédure échoue logiquement.

Je l'essaierai sur un poste muni d'un Office supérieur à 9.0

Bien le merci quand même pour cette méthode que je ne connais pas.

@+

Gabriel
  Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 11h22.


(C) 2006 Excel Downloads