J'ai récemment poster le topic : "VBA - Trouver un mot dans une plage"
On m'a était d'une très grande aide mais un nouveau problème du même genre se présente face a moi...
Je m'explique :
J'ai un grand nombre de cellules comportant des phrases diverses et variées. (en A)
J'ai créé une feuille avec un certain nombre de mots / phrases clé me permettant de repartir les cellules de la colonne A dans tel ou tel catégorie.
Je souhaite utiliser une variable qui prend les valeurs de mes mots clé et teste mes phrases.
Mon problème :
je souhaite que la recherche fonctionne uniquement quand la valeur inscrite dans ma variable soit retrouvé à l'identique dans mes phrases.
Exemple :
Avec la phrase : "c'est l'histoire de toto qui fait du vba"
pour un variable Var = "toto" , ma recherche doit fonctionner
pour Var = "toto qui fait du" , ma recherche doit fonctionner
pour Var = "totoo" , ma recherche ne doit rien trouver
pour Var = "totoquifait" ma recherche ne doit pas fonctionner
...etc
je cherche bien la valeur exacte de ma variable dans les cellules.
Le code donné dans le topic "VBA - Trouver un mot dans une plage", ne permet pas de trouver la cellule lorsque que l'on effectue une recherche à partir d'une phrase (Var = "toto qui fait")
Une fois de plus quelqu'un pourrait il me guider ?
a adapter, ici recherche colonne A en partant d'un bouton de formulaire ( code vba sur la feuille)
Private Sub CommandButton1_Click() Var = "toto qui" Nbre = Application.CountIf(Columns("A"), "*" & Var & "*") If Nbre > 0 Then lig = Columns("A").Find(Var, Range("A1"), , xlPart).Row Range("A" & lig).Select Else MsgBox "Pas trouvé" End If End Sub
Bonjour,
le problème de la fonction find c'est que dans la cas ou j'ai : Var ="toto qui"
la phrase : "toto quitte" va être trouvé...
de même pour Instr..
pas de probleme pour ce petit bug, mais je me repete,
moi Oui, merci, mais vue les cas que cette personne compte englober : lui pour un variable Var = "toto" , ma recherche doit fonctionner relui pour Var = "toto qui fait du" , ma recherche doit fonctionner
et rerelui et ce qui peut etre entre ses deux exemples .......
mettre en tableau OK si seulement "toto" mais le reste des possibilites !!!!!!
Le problème inhérent à ce sujet réside dans les "mots" qu'il va chercher.
Je dirais, à lui à bien choisir les mots clés.
Un peu comme lors d'une recherche sous google.....
Function Texte_precis(cellule As Range, cle As String) As Boolean Dim Nbcar1 As Byte, Cptr1 As Byte, Lettre As String * 1 'cellule Dim Nbcar2 As Byte, Cptr2 As Byte 'cle
Nbcar1 = Len(cellule) Nbcar2 = Len(cle) Cptr2 = 1 For Cptr1 = 1 To Nbcar1 Lettre = Mid(cellule, Cptr1, 1) If Lettre = Mid(cle, Cptr2, 1) Then Cptr2 = Cptr2 + 1 If Cptr2 > Nbcar2 Then Texte_precis = True Exit For End If Else Cptr2 = 1 End If Next If Cptr2 < Nbcar2 Then Texte_precis = False
le problème de la fonction find c'est que dans la cas ou j'ai : Var ="toto qui"
la phrase : "toto quitte" va être trouvé...
de même pour Instr..
Oui, mais normalement il y a un espace apres qui, donc essayez avec Var ="toto qui "
C'est vrai que cela fonctionne dans ce cas, mais pas si on est en fin de phrase, c'est ce qui me complique la vie...