Recherche particulière avec LIKE

Bonjour à tous,

Tout d'abord, merci beaucoup pour toutes les infos sur le site et sur le forum ! C'est le seul endroit qui n'est pas bloqué par l'anti-virus de ma boite et j'ai pu développer tout un "mini-projet" sans avoir à poser de question, car j'ai trouvé mes réponses ici. =)

Je viens toutefois vers vous maintenant, car on m'a demandé autre chose et je bloque. Ca m'avait l'ar tout simple mais je ne comprends pas ce qui ne fonctionne pas.

On me demande si on peut faire une recherche de noms contenus dans une colonne, mais lorsque les noms ne sont pas seuls dans la cellule. C'est pas clair mes explications alors j'illustre :

Mr TrucMr Machin
Madame BiduleMadame Bidule
Mr Truc et Madame Bidule...
Mr Machin...
Madame Patate et aussi Mr Machin...

Je veux donc pouvoir repérer si les noms dans la colone 2 sont contenus dans la colonne 1 (ici Mr Machin apparait donc 2 fois, et Madame Bidule aussi).

Ayant parcouru les cours VBA pendant quelques jours, je réponds à mon chef, "Ben oui c'est possible, il faut utiliser Like *leNom* dans la recherche !". Et hop, au boulot. Sauf que je ne sais pas utiliser Like dans les formules de base d'Excel (RECHERCHEV). Bon, ben je teste en faisant une macro. Et là, catastrophe, j'écris des bêtises, mon code (ci-dessous) est rouge à cause d'erreurs de compilation. (Les trois lignes rouges sont : celle avec le "Like", et les deux "End For".)

Sub RechercheSpeciale()
'
'RechercheSpeciale Macro
'Si les noms compris dans une colonne sont compris dans une autre, on recopie la cellule dans une troisième colonne.
'
    Dim nom_a_rechercher As String, nom_a_examiner As String, Nb_lignes_col_1 As Integer, Nb_lignes_col_2 As Integer, compteur As Integer
    Nb_lignes_col_1 = Cells(Rows.Count, 1).End(xlUp).Row 'Nombre de lignes dans la première colonne
    Nb_lignes_col_2 = Cells(Rows.Count, 5).End(xlUp).Row 'Nombre de lignes dans la deuxième colonne

    For i = 1 To Nb_lignes_col_1 'Avec l'hypothèse que la première colonne est plus longue que la deuxième (à inverser si faux)
        nom_a_examiner = Range("A" & i).Value
        For j = 1 To Nb_lignes_col_2
            nom_a_rechercher = Range("B" & j).Value
            If nom_a_examiner Like *nom_a_rechercher* Then
                Range("C" & compteur).Value = nom_a_examiner
                compteur = compteur + 1
            End If
            Next j
        End For
        Next i
    End For

End Sub

Je viens donc vers vous pour savoir ce qui ne va pas, et comment je pourrai faire ça bien ?

EDIT :

Je rajoute mon fichier de test, si ça aide. (La troisième colonne est bizarre,car j'essayais de voir comment fonctionne la fonction RECHERCHEV...)

tu peux utiliser cette formule

=NB.SI($A$1:$A$5;"*" & B1 & "*")

Ah oui ! Merci.

Comment je fais si le fichier a plus de 5 lignes ? Je peux sélectionner toute la colonne A, comme tu as fais pour la colonne B ?

EDIT : Oui il suffit de remplacer la plage par A:A !

Super. =)

Et du coup si j'ai 1800 noms à chercher, il faut taper la formule 1800 fois dans la colonne C, ou bien je peux demander à Excel de la répeter tout seul comme un grand pour chaque ligne ?

tu tires la formule jusqu'en bas du tableau ...

Voui, j'ai réalisé que ma question était stupide. Pardon.

aucune question n'est stupide, le fait de ne pas poser une question peut l'être ! nous sommes tous passés pra là !

amicalement

Michel

Rechercher des sujets similaires à "recherche particuliere like"