Bonjour,
Depuis un certain temps, j'utilise cette fonction pour simuler une RECHERCHEV par macro :
Je reviens vers vous car je viens de rencontrer une limite à celle-ci : lorsque, dans la colonne voulue, j'ai des valeurs avec des noms un peu pareils, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Function FindLine(VarATrouver As String, LettreColonne As String, NomFeuille As String, ColonneARenvoyer As Long) As String 'rechercheV qui renvoie le numéro de la ligne de la variable à trouver dans une feuille et une colonne définie Dim c As Object Dim therow As Long Set c = Sheets(NomFeuille).Range(LettreColonne & ":" & LettreColonne).Find(VarATrouver) FindLine = Sheets(NomFeuille).Cells(c.Row, ColonneARenvoyer).Value 'MsgBox FindLine End Function
Si je lance ma fonction, avec pour morceaux cherché "tot", il va me retourner le 2e argument, alors que je voudrais qu'il me prenne le terme exact dans ma recherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 tot tota1 tota2 tito3
J'ai essayé de modifier le Find en ajoutant cet argument :
mais le résultat est identique
Code : Sélectionner tout - Visualiser dans une fenêtre à part MatchCase:=True
Pour retracer un peu l'historique, au départ, j'avais créé ma fonction avec une boucle For toute bête, qui listait tout ce qu'il y avait dans ma feuille,e t dès qu'il trouvait il sortait de la boucle.
Suite à plusieurs conseils que j'ai eu ici, j'ai donc utilisé cette méthode du Find, qui était beaucoup plus rapide qu'une boucle For qui parcourt mes données. Mais à l'époque ce problème ne pouvait pas se produire
Avez-vous une idée de comment je pourrais améliorer ma fonction pour que cela fasse une recherche exacte sur le terme ?
Bien évidemment, et comme vous pourrez le remarquer, je voudrais éviter d'utiliser la fonction RECHERCHEV dans ma code, en passant par le WorksheetFunction classique.
Une idée ?![]()
Partager