VBA - Trouver la valeur exacte d'une variable dans une plage
Peon33
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à toutes et à tous !
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 ?
Merci d'avance
Peon33
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 ?
Merci d'avance
Peon33
4 réponses
-
Bonjour,
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
A+ -
Bonjour,
Avec une fonction personnalisée:Function toto(cellule As Range) As String
Dim tablo, Cptr As Byte
tablo = Split(cellule, " ")
For Cptr = 0 To UBound(tablo)
If UCase(tablo(Cptr)) = "TOTO" Then toto = "OK"
Exit Function
Next
End Function
Michel -
Bonjour F89
Excuse facile:
à 19h20, j'avais droit au top "wan" de la chorale occitane: "ch'uis pas mariée avec un ordinateur !!!"
Donc, ce matin, tranquilou...
Option Explicit
Function toto(cellule As Range) As String
Dim tablo, Cptr As Byte
tablo = Split(cellule, " ")
For Cptr = 0 To UBound(tablo)
If UCase(tablo(Cptr)) = "TOTO" Then
toto = "OK"
Exit Function
End If
Next
End Function
Merci de m'avoir signalé cette ânerie
Bon WE à toi
-
Re michel_m,
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 !!!!!! -
-
-
-
bonjour,
encore moiOption Explicit
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
End Function
maquette:
https://www.cjoint.com/?3Lqkkjl1T5i
Michel