<HTML>Bonjour Feitarassgat,
Je me suis penché sur ton problème... D'ailleurs c'est un gros problème vu que tu le pose sur d'autre forum... ;o)
Bon j'ai tout repris de ce que tu as fait....
Cette macro fonction avec :
1) Une feuille "Collection" avec une en-tête :
NOM PRENOM ADRESSE VILLE Dept
2) Une Feuille BD1 avec des données comme suit
NOM PRENOM ADRESSE VILLE Dept
toto Pierre 6, Rue du Pin Nice 06
zaza Paul 15, Rue des Roses Menton 06
toto Paul 1, Avenue du Soleil Cannes 06
Etc etc
3) Une Feuille BD2 avec des données comme suit
NOM PRENOM ADRESSE VILLE Dept
tutu Pierre 25, rue des Fleurs Nice 06
titi Paul 1, Rue des Sapins Paris 75
kiki Pierre 18, rue des Cèdres Cannes 06
SOIT LES 2 BDD ET LA FEUILLE DE COLLECTION IDENTIQUES (on peut varier les formats des bases mais c'est plus compliqué)
La macro si dessous, cherchera DANS TOUS LES CHAMPS de A à E jusqu'à la dernière ligne de chacune de tes deux bases.
Elle reportera AUTANT DE FOIS la ligne où elle aura trouvée la valeur cible demandée en INPUT box (attention sensible MAJ/MIN)
Exemple tu tapes Paul, la macro remontera en feuille collection :
NOM PRENOM ADRESSE VILLE Dept
zaza Paul 15, Rue des Roses Menton 6
toto Paul 1, Avenue du Soleil Cannes 6
titi Paul 1, Rue des Sapins Paris 75
A noter que la macro incrémentera dans la feuille "collection" les résultats des recherches successives, les uns à la suite des autres (sans effacer/écraser le résultat des anciennes recherches, mais on peut modifier.....)
Je ne sais pas si c'est ce que tu veux ??? en tout cas çà marche...
(Classeur à dispo)
Bonne fin de Dimanche
@+Thierry
=THE MACRO=====(à copier dans un module standard)========
Sub Chercher()
'Macro rédigée par Thierry Eygenraam, (eygenraam.thierry@laposte.net)
Dim LigneCollect As Integer
Dim LigneBD1 As Integer
Dim LigneBD2 As Integer
Recherche = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")
'TRAITEMENT BASE DE DONNES UN
Sheets("BD1").Select
Range("A1", Range("A1").End(xlDown)).Select
For LigneBD1 = 1 To Selection.Cells.Count
For ColonneBD1 = 1 To 5
If Cells(LigneBD1, ColonneBD1).Value = Recherche Then
LigneCollect = Sheets("Collection").Range("a65536").End(xlUp).Row + 1
Sheets("Collection").Range("A" & LigneCollect & ":E" & LigneCollect).Value = _
Sheets("BD1").Range("A" & LigneBD1 & ":E" & LigneBD1).Value
End If
Next ColonneBD1
Next LigneBD1
'TRAITEMENT BASE DE DONNES DEUX
Sheets("BD2").Select
Range("A1", Range("A1").End(xlDown)).Select
For LigneBD2 = 1 To Selection.Cells.Count
For ColonneBD2 = 1 To 5
If Cells(LigneBD2, ColonneBD2).Value = Recherche Then
LigneCollect = Sheets("Collection").Range("a65536").End(xlUp).Row + 1
Sheets("Collection").Range("A" & LigneCollect & ":E" & LigneCollect).Value = _
Sheets("BD2").Range("A" & LigneBD2 & ":E" & LigneBD2).Value
End If
Next ColonneBD2
Next LigneBD2
End Sub</HTML>