recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

dj.run

XLDnaute Nouveau
Bonjour à tous et à toutes,

J'ai besoin d'un petit coup de main (mais pas sur la tête).

Je vous explique mon problème, j'ai un répertoire qui est rempli de fichiers Excel qui ne sont n'y plus n'y moins que des fiches de renseignements. Ces fichiers sont nommés par le nom de personne (ex: Dupont eric.xls) j'aimerai à partir d'une feuille de recherche faire une macro qui puisse rechercher la valeur d'une cellule dans ce répertoire de fichiers Excel, si la macro trouve, quelle me l'affiche sur ma feuille de recherche et si je clique dessus, quelle m'ouvre ce fichier. ça à l'air simple à dire mais moi j'y pers mon "Latin" .

Merci d'avance a tous ceux qui pourront m'aider.


dj.run
 

bqtr

XLDnaute Accro
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Bonjour dj.run

Un exemple avec deux macros :

La première, à mettre dans un module de code standard

Code:
Sub Recherche_Fichier2()

Dim FSO As Scripting.FileSystemObject
Dim Rep As Scripting.Folder
Dim Fichier As Scripting.File
Dim Chemin

Chemin = "Q:\bilans" ' Chemin du répertoire où aura lieu la recherche
Set FSO = New Scripting.FileSystemObject
Set Rep = FSO.GetFolder(Chemin)

Range("C1").ClearContents
For Each Fichier In Rep.Files
    If Fichier.Name = Range("A1").Value Then
       Range("C1") = Fichier.Path
       Exit For
    End If
 i = i + 1
Next

If Range("C1").Value = "" Then MsgBox "Fichier: " & Range("A1").Value & " introuvable", , "Erreur:"

Set FSO = Nothing
Set Rep = Nothing
Set Fichier = Nothing

End Sub

La deuxième à mettre dans le module de la feuille (click droit sur l'onglet de la feuille puis visualiser le code)

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = Range("C1") Then
   Workbooks.Open Filename:=Target
End If
End Sub

Tu modifies la variable Chemin (avec le chemin de ton répertoire)
Tu entres le nom à rechercher en A1 et tu lances la macro, si le fichier existe, il se met en C1, sinon une message te dit qu'il est introuvable.
En double-cliquant sur C1, le Fichier s'ouvre.

Tu seras peut-être obligé d'activer une référence :

Vérifie que dans le menu outils (de VBA) + Références , la référence :
"Microsoft Scritpting Runtime" est bien cochée.

Bon test, A+
 

dj.run

XLDnaute Nouveau
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Merci Bqtr de t'etre panché sur mon probleme, j'ai adapté ton code à mon expemple et il y a un petit bug qui persiste et je n'en trouve pas la raison. je te fais passer mon code:

Sub Recherche_Fichier2()

Dim FSO As Scripting.FileSystemObject
Dim Rep As Scripting.Folder
Dim Fichier As Scripting.File
Dim Chemin

Chemin = "C:\CHE adhérants" ' Chemin du répertoire où aura lieu la recherche
Set FSO = New Scripting.FileSystemObject
Set Rep = FSO.GetFolder(Chemin)

Range("j8").ClearContents
For Each Fichier In Rep.Files
If Fichier.Name = Range("j4").Value Then
Range("j8") = Fichier.Path
Exit For
End If
i = i + 1
Next

If Range("j8").Value = "" Then MsgBox "Fichier: " & Range("j4").Value & " introuvable", , "Erreur:"

Set FSO = Nothing
Set Rep = Nothing
Set Fichier = Nothing

End Sub

le plantage est sur : Range("j8").ClearContents

tes lumieres vont peut pouvoir m'expliquer pourqu'oi ça plante ?

merci beaucoup pour ton aide
 

dj.run

XLDnaute Nouveau
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

re Bqtr, j'ai compris le pourquoi ça marchait pas, mes cellules J4 et J8 etaient fusionnée avec d'autres cellules.

En enlevant la fusion cela fonctionne.

Petite question supplémentaire si ce n'est pas trop abuser ?

exemple j'ai un fichier enregistré sur c:\CHE adhérants sous le nom Dupont pierre philippe
Éric max.xls

si je fais une recherche avec le nom en entier ex Dupont pierre philippe Éric max.xls
cela fonctionne tres bien mais si je fais une recherche seulement sur Dupont cela ne trouve pas la réponse.

Y a t il un moyen de faire une recherche avec seulement une partie du nom du fichier .

Merci à toi

Dj.run
 

matthieu33

XLDnaute Occasionnel
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Bonjour dj.run et le forum,

1. Pour le plantage sur "Range("j8").ClearContents", essaie en mettant le nom de la feuille devant
ex : worksheets("Nom Feuille").Range("j8").ClearContents

2. Pour rechercher un nom de fichier commençant par :
If Fichier.Name Like Range("j4").Value & "*" Then

@+
 

bqtr

XLDnaute Accro
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Re, bonjour matthieu33,

Si tu as plusieurs fichiers qui commencent par le même nom, Ex Dupont Tttt, Dupont YYYY ....

Code:
Sub Recherche_Fichier2()

Dim FSO As Scripting.FileSystemObject
Dim Rep As Scripting.Folder
Dim Fichier As Scripting.File
Dim Chemin, lign As Long

Chemin = "Q:\bilans" ' Chemin du répertoire où aura lieu la recherche
Set FSO = New Scripting.FileSystemObject
Set Rep = FSO.GetFolder(Chemin)

Range("C1:C" & Range("C65536").End(xlUp).Row).ClearContents
For Each Fichier In Rep.Files
    If Fichier.Name Like Range("A1").Value & "*" Then
       lign = lign + 1
       Range("C" & lign) = Fichier.Path
    End If
Next

If Range("C1").Value = "" Then MsgBox "Fichier: " & Range("A1").Value & " introuvable", , "Erreur:"

Set FSO = Nothing
Set Rep = Nothing
Set Fichier = Nothing

End Sub

Et pour ouvrir le fichier :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim ¨Plg As Range
Dim Cell As Range

Set plg = Range("C1:C" & Range("C65536").End(xlUp).Row)
For Each Cell In plg
  If Target = Cell Then
    Workbooks.Open Filename:=Target
  End If
Next

End Sub


Bonne journée
 

dj.run

XLDnaute Nouveau
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Bonjour BQTR, et MATTHIEU33,
je vous remercie pour votre aide, j'ai essayé d'adapter vos code à mon application et je rencontre un petit probleme avec :

Range("C1:C" & Range("C65536").End(xlUp).Row).ClearContents
For Each Fichier In Rep.Files
If Fichier.Name Like Range("A1").Value & "*" Then
lign = lign + 1
Range("C" & lign) = Fichier.Path
End If
Next

Car je voudrai que les résultats s'affichent à partir de la cellule C8 et vers le bas, si il y a plusieurs réponses.

Merci encore à vous deux

dj.run
 

bqtr

XLDnaute Accro
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Re,

Essaye comme ça :

Code:
Range("C8:C" & Range("C65536").End(xlUp).Row).ClearContents
For Each Fichier In Rep.Files
    If Fichier.Name Like Range("A1").Value & "*" Then
       lign = lign + 1
       Range("C" & lign + 7) = Fichier.Path
    End If
Next

If Range("C8").Value = "" Then MsgBox "Fichier: " & Range("A1").Value & " introuvable", , "Erreur:"

Dans l'autre procédure :

Code:
Set plg = Range("C8:C" & Range("C65536").End(xlUp).Row)
For Each Cell In plg
  If Target = Cell Then
    Workbooks.Open Filename:=Target

Bon dimanche
 

bomaletoi

XLDnaute Nouveau
Re : recherche fichiers excel dans un repertoire a partir d'une valeur de cellule

Bonjour à tous,
J'ai un souci un peu similaire...

j'ai une liste de references que je souhaite chercher dans un repertoire et ses sous repertoires.

Seulement je ne cherche pas le nom de fichier mais le fichier contenant cette information...

j'ai une liste de valeurs que je cherche.

comment adapter ce code ?

d'avance merci

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 139
Membres
104 047
dernier inscrit
bravetta