recherche de fichier impossible

  • Initiateur de la discussion Initiateur de la discussion Antoine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour