Bonjour tout le monde,
SVP, je cherche une solution à mon souci et jusqu'à aujourd'hui je n'ai pas trouver de solution qui s'adapte à mon besoin. Alors j’espère trouver l'aide dont j'ai besoin ici.
Pour faire simple, j'ai un classeur Excel qui contient deux onglets :
Onglet_01 (Colonne A) ► Liste de prénoms.
Onglet_02 : noms & prénoms, n° de tel, adresse, cp.
J'ai besoin de chercher chaque prénom de la liste des prénoms de l'onglet_01 (Colonne A) dans l'onglet_02 (noms & prénoms) sachant que la valeur cherchée peut se trouver dans n'importe quelle position de la cellule de l'onglet_02 de la colonne A (au début, au milieu ou à la fin).
Le principe est similaire à la manipulation CTRL+F sauf que la recherche doit se faire une liste contenant plus que 100 000 prénoms.
Le résultats doit être lisible (marquer la ligne où le résultat a été trouver en insérant une valeur devant la première cellule vide de la ligne.
Je ne sais pas si mes explications sont assez claires mais je joint quand même un exemple de mon fichier pour faciliter la compréhension de ma demande.
J'ai essayer avec la fonction Index équivalent sauf que ça me prends beaucoup de temps lors du calcul automatique et le volume du fichier s'accroit et ça me crée des lenteurs énormes sur mon poste de travail.
=INDEX(Onglet_01!$A:$A;EQUIV("*"&$A2&"*";Onglet_01!$A:$A;0))
J'ai aussi trouver un code VBA sur le net sauf que ça ne m'aide pas beaucoup car elle me renvoi un résultat inexacte :
Sub Reperer_Ch_01()
'Place un 0 en face de chaque cellule à tester
y = Range("C" & Rows.Count).End(xlUp).Row 'y = le nombre de cellules non-vides de la colonne C
Range("I2:I" & y).Value = "" 'Place un 0 en face de chaque cellule non-vide de la colonne C (en colonne I)
'Teste la présence des chaines de caractère de la colonne A sur chaque cellule non-vide de la colonne B
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row 'nombre de cellules contenant les chaines de caractères à rechercher
entité = Range("A" & x) 'on recherche la première chaine de caractères, ici en A2
Set c = ActiveSheet.Columns(4).Find(entité, LookIn:=xlValues, lookat:=xlPart) '"c" représente la cellule où est trouvée la chaine de caractères
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 5).Value = 1 'placer un "1" en face de la cellule qui contient la chaine de caractères recherchée
Set c = ActiveSheet.Columns(4).FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
Next x 'passe à la deuxième chaine de caractères recherchée (donc passe à la chaine de caractères en A3, puis en A4, etc...)
End Sub
Je vous remercie d'avance pour votre aide.