Recherche dans plusieurs classeurs

bmellah

XLDnaute Nouveau
Bonjour à tous,

Ma recherche sur le web et sur ce forum étant infructueuse, je me permets de poster ma question.
Je souhaite pouvoir rechercher une valeur unique dans plusieurs classeurs excel situés dans un même dossier et ce de façon automatique.
Jusqu'à maintenant je dois ouvrir les classeurs les uns après les autres et lancer ma recherche (ctrl+F). Celà n'est pas très pratique car je dois souvent chercher dans plus d'une trentaine de fichiers. :(

Après avoir fait marcher un peu mon neurone, je pense qu'il faudrait procéder de la sorte :
1)Demander dans quel dossier effectuer la recherche
2)Lister les fichiers excels présents dans ce dossier (pour celà, j'ai trouvé le joli fichier ListView_Fichiers_et_icones_executables.xls de Michelxld ;) )
3)Puis pour chaque fichier xls présent dans le dossier et tant que la valeur n'a pas été trouvée
- Ouverture
- Recherche de la valeur
- Fermeture si non trouvé

J'ai pour l'instant fait du VBA à un niveau très basique alors je préfèrerais avoir votre avis avant de me lancer! Et si certains d'entres vous ont déjà vu une telle application, n'hésitez pas à me le dire! :whistle:

Merci d'avance pour votre aide!

Bertrand
 

CBernardT

XLDnaute Barbatruc
Bonjour Bmellab et CélineG,

Une macro qui doit réaliser ce que tu veux ?

Il est supposé que les fichiers à passer en revue sont dans le même répertoire.

Sub ListeFichiersTxt()
Dim Dossier As Object, Fichier As Object, Ws As Object
Dim StrSearchString As String, Chemin As String
Dim I As Byte, CountTot As Byte
Dim FoundCell As Variant

StrSearchString = InputBox(Prompt:='Saisir la valeur à chercher.', Title:='Recherche')
If StrSearchString = '' Then Exit Sub
Chemin = ThisWorkbook.Path
Set Dossier = CreateObject('Scripting.FileSystemObject').GetFolder(Chemin)
For Each Fichier In Dossier.Files
If Right(Fichier.Name, 3) = 'xls' Then
If Fichier.Name <> ThisWorkbook.Name Then
Workbooks.Open Filename:=Fichier
For Each Ws In Worksheets
CountTot = CountTot + Application.CountIf(Ws.UsedRange, '=' & StrSearchString)
Next Ws
If CountTot <> 0 Then
For Each Ws In Worksheets
With Ws
.Activate
Set FoundCell = .Cells.Find(What:=StrSearchString, LookIn:=xlValues, LookAt:=xlPart)
If Not FoundCell Is Nothing Then
FoundCell.Activate
Exit Sub
End If
End With
Next Ws
Else
ActiveWorkbook.Close
End If
End If
End If
Next Fichier
End Sub

Cordialement

Bernard
 

peygase

XLDnaute Nouveau
Re : Recherche dans plusieurs classeurs

bonjour

jai le meme probleme sauf que pour moi la valeur a chercher et toujour different
jai beau tous tésté ca ne fonctionne pas

merci d'avance pour toute reponce
 
Dernière édition:

Artragis

XLDnaute Nouveau
Re : Recherche dans plusieurs classeurs

Bonjour, j'ai pour la part le même problème, les connaissance en VBA en moins.
J'ia office 2007 et lorsque je "compile" la macro (comme l'indique l'aide MS) il me met une erreur de compilation,surlignant la ligne d'insertion de la textbox, erreur de syntaxe. Que se passe-t-il réellement?
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19