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 Truc | Mr Machin |
| Madame Bidule | Madame 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...)