Recherche sur plusieurs classeurs fermés

SALAH

XLDnaute Occasionnel
Bonjour à tous

Mon souci c' est cette macro qui est très bien conçue que j' ai trouvé sur le net qui fait une recherche sur plusieurs classeurs
elle fonctionne très bien mais le seul souci pour moi c ' est quand il s' agit de doublon elle m' affiche qu' un seul nom alors que moi j' aimerais qu' il m' affiche tout

Pourriez-vous m' aidez svp
je joins le fichier. Merci
 

Pièces jointes

  • Classeur.xls
    10.1 KB · Affichages: 24
  • Recherche.xls
    46.5 KB · Affichages: 29
  • Classeur.xls
    10.1 KB · Affichages: 26
  • Recherche.xls
    46.5 KB · Affichages: 28
  • Classeur.xls
    10.1 KB · Affichages: 29
  • Recherche.xls
    46.5 KB · Affichages: 30

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche sur plusieurs classeurs fermés

Bonjour Salah, bonjour le forum,

Peut-être comme ça :
Code:
Sub ListeFichiersTxt()
Dim Dossier As Object, Fichier As Object, Ws As Object
Dim StrSearchString As String, Chemin As String
Dim I As Byte
Dim FoundCell As Range
Dim PA As String

Application.ScreenUpdating = False
I = 10
StrSearchString = InputBox(Prompt:="Saisir Le Nom du Client ?.", Title:="Recherche")
If StrSearchString = "" Then Exit Sub
Range("B10:B50").ClearContents
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
            With Ws
                .Activate
                Set FoundCell = .Cells.Find(What:=StrSearchString, LookIn:=xlValues, LookAt:=xlPart)
                If Not FoundCell Is Nothing Then
                    PA = FoundCell.Address
                    Do
                        FoundCell.Activate
                        ThisWorkbook.Sheets(1).Cells(I, 2).Value = Fichier.Name & " --> Feuille: " & Ws.Name & "--> Cellule " & FoundCell.Address
                        I = I + 1
                        FoundCell = .Cells.Findext(FoundCell)
                    Loop While Not FoundCell Is Nothing And FoundCell.Address <> PA
                End If
            End With
        Next Ws
    ActiveWorkbook.Close savechanges:=False
    End If
    End If
Next Fichier
Application.ScreenUpdating = True
End Sub

Je précise que la recherche ne se fait pas sur des classeurs fermés, puisque ils sont d'abord ouverts avant d'effectuer la recherche pour être ensuite refermés...
 

SALAH

XLDnaute Occasionnel
Re : Recherche sur plusieurs classeurs fermés

Bonjour le Forum, Bonjour Robert

Merci pour votre aide mais apparemment quand je teste il m' indique une erreur d' exécution '438' : Propriété ou méthode non gérée par cet objet qui bloque au niveau de la ligne "FoundCell = .Cells.Findext(FoundCell)"

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche sur plusieurs classeurs fermés

Bonsoir Salah, bonsoir le forum,

Désolé Salah ! Une faute de frappe... et pas de test derrière (Kékon !)
Remplacer :
Code:
FoundCell = .Cells.Findext(FoundCell)
par :
Code:
FoundCell = .Cells.FindNext(FoundCell)
FindNext avec le N en plus...
 

SALAH

XLDnaute Occasionnel
Re : Recherche sur plusieurs classeurs fermés

Bonjour le forum, Robert

Robert, c 'est beaucoup mieux mais seulement il y a un hic il ne m' affiche pas les doublons
sur l' exemple j' ai 2 DUPONT et il m' en affiche qu 'un seul

Merci
 

Pièces jointes

  • Classeur.xls
    10.1 KB · Affichages: 17
  • Recherche.xls
    47 KB · Affichages: 13
  • Classeur.xls
    10.1 KB · Affichages: 17
  • Recherche.xls
    47 KB · Affichages: 16
  • Classeur.xls
    10.1 KB · Affichages: 12
  • Recherche.xls
    47 KB · Affichages: 15

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche sur plusieurs classeurs fermés

Bonjour Salah, bonjour le forum,

Ha mais quelle feignasse je suis ! Bon, cette fois j'ai pris le temps de tester et donc de corriger mon erreur...
D'abord, tu peux supprimer la ligne :
Code:
FoundCell.Activate
qui ne fait que ralentir le code...

Ensuite, remplace :
Code:
FoundCell = .Cells.FindNext(FoundCell)
par :
Code:
Set FoundCell = .Cells.FindNext(FoundCell)
Et comme c'est le dernier Set, tu gagnes le match...
 

SALAH

XLDnaute Occasionnel
Re : Recherche sur plusieurs classeurs fermés

Bonjour Robert, Bonjour le forum

Robert, pas mal le jeu de mot mais c' est plutôt toi qui gagne le math car tout marche à merveille
je ne serais jamais te remercier pour ton aide

Merci encore une fois à vous tous
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr