recherche de fichier impossible

A

Antoine

Guest
bonjour à toutes et à tous,

j'ai un Pb pour trouver un fichier existant. je voulait le faire avec Filesearch mais cela ne fonctionne pas chez moi alors que chez Michel du forum il n'y avait pas de soucis. j'ai w2k SP4 et office2003 SP1. je ne m'en sors pas. Please Help me.

Voilà ce que je veux faire:

mon application tourne ds un repertoire. Il y a deux sous-répertoiures
1) un où j'ai ts mes documents .xls (partie_semi_variable&partie_variable.xls ex : azer291104.xls))
2) un deuxième où j'ai des documents types.

j'aimerai que l'application aille vérifier ds le premier répertoire si il n'existe pas un document avec une partie semi variable (azer) identique de façon à prendre ce document comme base plutôt que d'aller chercher un document type, ce qui éviterai de resaisir un certain nombre d'info.

merci pour votre aide.
 
M

michel

Guest
bonsoir Antoine

il me semble que la macro proposée dans un de tes anciens posts , reponds à ta demande
ci-joint la procedure un peu modifiée


Sub rechercheFichiers_Repertoire()
Dim Dossier As String
Dim Cible As String

Dossier = "C:\Documents and Settings\michel\dossier\general\excel"'adapter le nom du dossier dans lequel la recherche doit etre effectuée

Cible = InputBox("Saisir le nom ou une partie du fichier à retrouver ", "Recherche Fichier")
If Cible = "" Then Exit Sub

ListFilesInFolder Dossier, Cible, True
End Sub


Sub ListFilesInFolder(SourceFolderName As String, motCible, IncludeSubfolders As Boolean)
' adapté de Ole P Erlandsen
'necessite d'aviter la reference Microsoft Scripting RunTime
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File

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

For Each FileItem In SourceFolder.Files
If InStr(1, FileItem.Name, motCible, vbTextCompare) > 0 And Right(FileItem.Name, 4) = ".xls" Then
'MsgBox "Fichier trouvé : " & vbLf & FileItem.Name, , _
Recherche des classeurs contenant le mot & motCible

Workbooks.Open SourceFolder.Path & "\" & FileItem.Name
Exit Sub
End If
Next FileItem

'If IncludeSubfolders Then 'recherche dans les sous repertoires
'For Each SubFolder In SourceFolder.subfolders
'ListFilesInFolder SubFolder.Path, motCible, True
'Next SubFolder
'End If

End Sub


bonne soirée
MichelXld
 
A

Antoine

Guest
Bonsoir Michel et le forum,

je te remercie pour le code, mais je l'avais écris précédemment, je débute et donc pas très doué. je ne vois pas où transmettre mon nom de fichier a recher cher ou autre.

Mercie de ton aide et de ta patience.

Antoine
 
M

michel

Guest
rebonsoir Antoine

j'espere que ces compléments d'informations pourront t'aider


Sub rechercheFichiers_Repertoire()
Dim Dossier As String
Dim Cible As String

Dossier = "C:\Documents and Settings\michel" 'adapter le nom du répertoire contenant le classeur à rechercher

'**************************************************
'boite de dialogue qui permet de saisir le nom ou une partie du nom de classeur à rechercher
Cible = InputBox("Saisir le nom ou une partie du fichier à retrouver ", "Recherche Fichier")
'si le nom du classeur est deja connu on peut ecrire :
'Cible = "MonClasseur.xls"
'**********************************************

If Cible = "" Then Exit Sub'sortir si rien n'est saisi dans la boite de dialogue

ListFilesInFolder Dossier, Cible, True 'appel de la procedure "ListFilesInFolder"
End Sub


Sub ListFilesInFolder(SourceFolderName As String, motCible, IncludeSubfolders As Boolean)
' adapté de Ole P Erlandsen
'necessite d'activer la reference Microsoft Scripting RunTime
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File

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

For Each FileItem In SourceFolder.Files

   'boucle sur tous les classeur du repertoire :
   'controle si les noms de classeurs comportent une partie de la variable "cible"
   If InStr(1, FileItem.Name, motCible, vbTextCompare) > 0 And Right(FileItem.Name, 4) = ".xls" Then
      'MsgBox "Fichier trouvé : " & vbLf & FileItem.Name, , _
      "Recherche des classeurs contenant le mot " & motCible
      Workbooks.Open SourceFolder.Path & "\" & FileItem.Name
      Exit Sub 'sortir de la procedure'ouverture du classeur
   End If

Next FileItem

'If IncludeSubfolders Then 'recherche dans les sous repertoires
'For Each SubFolder In SourceFolder.subfolders
'ListFilesInFolder SubFolder.Path, motCible, True
'Next SubFolder
'End If

End Sub


bonne soiree
MichelXld
 
A

Antoine

Guest
re bonsoir,

j'ai inséré ton code

Sub ListFilesInFolder(SourceFolderName As String, motcible, IncudeSubfolders As Boolean)
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Set Fso = CreateObjet("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(SourceFolderName)
For Each FileItem In SourceFolder.Files
...

et pour dim Fso... il me met une erreur de compilation Type défini par l'utilisateur non defini.

au secours, je suis perdu.

Merci

Antoine
 
M

michel

Guest
bonjour Antoine

avant de lancer la macro , il faut

activer la reference Microsoft Scripting RunTime

tu vas dans visual Basic Editor (Alt+F11)
dans le menu Outils
Reference
dans la boite de dialoque qui s'affiche , coches la ligne Microsoft Scripting RunTime
cliques sur "OK" pour valider


bonne journée
MichelXld
 

Statistiques des forums

Discussions
312 613
Messages
2 090 234
Membres
104 463
dernier inscrit
lbo