VBA - Trouver un mot dans une plage
Résolu
Peon33
-
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
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
- Rechercher ou saisir une url - 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