Recherche d'une donnée sur plusieurs fichiers.

  • Initiateur de la discussion Initiateur de la discussion djalil
  • 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 !

D

djalil

Guest
Bonjour à tous,

Je voudrais savoir si il est possible de rechercher une donnée dans plusieurs fichiers situer dans le meme dossiers , par exemple chercher un numero dans dans les classeur1, 2, 3... et avoir comme resultats toutes les cellules ou ce numero figure sur un la feuil resultats.

Merci d'avance. 🙂
 
Bonsoir Djalil, bonsoir le forum,

Je te propose la macro ci-dessous mais elle ne fonctionne que si tous les classeurs dans lesquels tu fais ta recherche sont ouverts. Je pense qu'il est possible de le faire classeurs fermés mais c'est bien au dessus de mes connaissances.

la macro :

Sub Macro1()
Dim nb As String 'déclare la variable nb (nombre)
Dim Cnb As Double 'déclare la variable Cnb (Convertion du nombre)
Dim Wb As Workbook 'déclare la variable Wb (Workbook)
Dim Ws As Worksheet 'déclare la variable Ws (Worksheet)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim msg As String 'déclare la variable msg(message)

'définit la variable nb (boîte d'entrée)
nb = InputBox('Taper la valeur recherchée', 'Recherche')
If nb = '' Then Exit Sub 'si la boîte n'est pas renseignée, sort de la procédure
Cnb = CDbl(nb) 'définit la variable Cnb

For Each Wb In Workbooks 'boucle sur tous les classeurs ouverts
PA = '' 'définit/redéfinit la variable PA
'si le classeur se nomme 'perso.xls' passe au suivant via la balise 'fin'
If Wb.Name = 'perso.xls' Then GoTo fin
Wb.Activate 'active le classeur
On Error GoTo fin 'evite le bug si l'onglet 'resultats' n'existe pas
Set Ws = Worksheets('resultats') 'définit la variable Ws
Ws.Select 'sélectionne l'onglet 'resultats'
With Ws.UsedRange 'prend en compte toutes les cellules éditées de cet onglet
Set R = .Find(Cnb) ''definit la variable R (recherche du nombre édité dans la boîte d'entrée)
If Not R Is Nothing Then 'condition : si une occurence est trouvée
PA = R.Address 'redéfinit la variable PA
Do 'exécute
'définit la variable msg (mémorise le nom du classeur et l'adresse de la cellule)
msg = msg & Wb.Name & ' / ' & R.Address(0, 0) & Chr(13)
Set R = .FindNext(R) 'redéfinit la variable R (recherche le suivant)
'boucle tant que le suivant n'a pas l'adresse de PA
Loop While Not R Is Nothing And R.Address <> PA
End If 'fin de la condition
End With 'fin de la prise en compte
fin: 'balise
Next Wb 'prochain classeur ouvert

ThisWorkbook.Activate 'sélectionne ce classeur
MsgBox msg 'affiche e message
End Sub
 
- 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

Réponses
15
Affichages
801
Réponses
23
Affichages
660
Retour