![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: mai 2005
Messages: 2
|
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 |
|
|
|
| ANNONCES | |||
|
|
|
|
#3 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Messages: 1 159
|
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').GetFold er(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 |
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|