VBA - Trouver la valeur exacte d'une variable dans une plage
Peon33
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 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
A voir également:
- Vba find valeur exacte
- Trouver mon adresse exacte - Guide
- Find and mount - Télécharger - Récupération de données
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Valeur ascii - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
4 réponses
Bonjour,
a adapter, ici recherche colonne A en partant d'un bouton de formulaire ( code vba sur la feuille)
A+
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:
Michel
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...
Merci de m'avoir signalé cette ânerie
Bon WE à toi
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 !!!!!!
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 moi
maquette:
https://www.cjoint.com/?3Lqkkjl1T5i
Michel
encore moi
Option 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
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...