VBA - Trouver un mot dans une plage
Résolu
Peon33
-
melanie1324 Messages postés 1561 Statut Membre -
melanie1324 Messages postés 1561 Statut Membre -
Bonjour à toute et à tous !
Malgré mes recherches, je n'arrive pas à trouver une solution à un problème qui au premier plan me semble simple..
J'ai dans la colonne A une grande quantité de mots.
Je cherche les cells ayant un mot en particulier.
Par exemple : je cherche les cells ayant le mot "toto"
Pour :
- toto : ça doit fonctionner
- toto galére : ça doit fonctionner
- totoo : ça ne doit pas le prendre
-toto33 : ça ne doit pas le prendre
..etc
Les fonctions find, instr ou like ne me permettent pas de sélectionner uniquement les cellules comportant mon mot exact...
quelqu'un pourrait il éclairer ma lanterne ? :)
merci d'avance !
Malgré mes recherches, je n'arrive pas à trouver une solution à un problème qui au premier plan me semble simple..
J'ai dans la colonne A une grande quantité de mots.
Je cherche les cells ayant un mot en particulier.
Par exemple : je cherche les cells ayant le mot "toto"
Pour :
- toto : ça doit fonctionner
- toto galére : ça doit fonctionner
- totoo : ça ne doit pas le prendre
-toto33 : ça ne doit pas le prendre
..etc
Les fonctions find, instr ou like ne me permettent pas de sélectionner uniquement les cellules comportant mon mot exact...
quelqu'un pourrait il éclairer ma lanterne ? :)
merci d'avance !
A voir également:
- Vba excel rechercher un mot dans une plage
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Word et excel gratuit - Guide
4 réponses
Bonjour,
Voici une macro permettant de trouver le mot défini dans la variable mot où que se trouve le mot dans la cellule :
Voici une macro permettant de trouver le mot défini dans la variable mot où que se trouve le mot dans la cellule :
Sub trouver toto()
mot = "toto"
nbcarmot = Len(mot) 'nombre de caractère dans le mot
For i = 2 To 500 ' de la ligne 2 à 500
nbcarcellule = Len(Cells(i, 2)) 'nombre de caractère dans la cellule de la ligne i colonne 2
d = 0
If nbcarcellule >= nbcarmot Then 'si la cellule contient au moins autant de caractère que dans le mot
Do While c - d >= b 'boucle permettant de trouver le mot dans la cellule
a = Left(Right(Cells(i, 2), nbcarcellule - d), nbcarmot) 'ligne qui peut être enlever mais permet de voir ce qui est comparé en F8
If a = mot Then 'si le mot est trouvé
w = 1 'la variable w est égale alors à 1
End If
d = d + 1 'permettant d'étudier toute la cellule
Loop
End If
Next
End Sub
Excellent, ça fonctionne comme je veux, je n'aurai pas trouvé tout seul !
Un gros MERCI ! vous êtes super :)
Un gros MERCI ! vous êtes super :)
Bonjour,
Salut Mélanie,
Ta méthode, du moins il me semble, trouve également toto dans totoo et dans toto33, ce que ne veux pas Peon33.
Essaye plutôt comme ceci :
Salut Mélanie,
Ta méthode, du moins il me semble, trouve également toto dans totoo et dans toto33, ce que ne veux pas Peon33.
Essaye plutôt comme ceci :
Const monMot = "toto"
Sub Boucle()
Dim rngTrouve As Range, firstAddress As String
Set rngTrouve = Columns(1).Cells.Find(monMot, lookat:=xlPart)
'******************** Cas ou on ne trouve pas du tout le mot
If rngTrouve Is Nothing Then
MsgBox "Le mot " & monMot & " est introuvable colonne 1"
Exit Sub
End If
'******************** A partir d'ici on a trouvé au moins une occurrence du mot
If ExisteMot(rngTrouve.Value) Then
MsgBox monMot & " trouvé dans la cellule " & rngTrouve.Address
End If
firstAddress = rngTrouve.Address
Do While Not rngTrouve Is Nothing
Set rngTrouve = Columns(1).Cells.FindNext(rngTrouve)
If rngTrouve.Address = firstAddress Then Exit Do
If ExisteMot(rngTrouve.Value) Then
MsgBox monMot & " trouvé dans la cellule " & rngTrouve.Address
End If
Loop
End Sub
Function ExisteMot(Phrase As String)
Dim ListeMots, Mots As Variant
ListeMots = Split(Phrase, " ")
For Each Mots In ListeMots
If Mots = monMot Then ExisteMot = True: Exit Function
Next
End Function