Rechercher un bout de phrase dans une cellule
bonjour le forum,
J'ai exposé mon problème dans le fichier suivant :
https://www.excel-pratique.com/~files/doc/lpJBHTableau.rar
j'ai déja fait une macro pour faire une rechercher suivant le numéro du flux et l'identifaint du flux.. mais pour la colonne Etat j'aimerais faire une recherche sur des bouts de phrases..je ne sais pas si cela est possible??
Quelqu'un peut m'aider?? J'espere que je ne suis pas flou dans mes indications
Cdt
jj
Bonjour,
En VBA, je ne sais pas faire.
Par formule, ça pourrait donner ceci :
Dans la mesure où le bout de phrase fait 2 mots :
=ET(ESTNUM(CHERCHE(GAUCHE(bout_de_phrase;TROUVE(" ";bout_de_phrase)-1);F2));ESTNUM(CHERCHE(DROITE(bout_de_phrase;NBCAR(bout_de_phrase)-TROUVE(" ";bout_de_phrase));F2)))On peut améliorer en testant s'il y a un seul mot (donc sans espace) dans le bout de phrase.
Je te laisse essayer
Reviens avec plus de précisions si je me suis égaré.
@+
Merci d'avoir répondu.
J'ai essayer de tester ton bout de code sans résultat. Si j'ai bien compris cela indique 'vrai' si un mot d'une phrase se trouve dans F2 et faux si ce mot n'est pas présent. J'ai fait un test mais la cellule m'indique toujours faux.
Mais il me faut plutot un code en VBA car je ne peux pas faire ca pour chaque cellule. Il faut que je puisse taper un mot et qu'il cherche dans tous les onglets pour trouver la ligne ou est présent ce mot. Je ne sais pas si c'est possible...
Cdt
jj
Merci encore thibo d'avoir repondu mais je crois que le plus simple quand on ne trouve pas quelque chose, C'est D ALLER VOIR SUR LES AUTRES FORUM !!!!!!!
Salut le forum
Les mots doivent être séparés par un espace. (A tester)
Sub Recherche_Mots()
Dim PremCell As String
Dim Cell As Range
Dim Cherche As String
Dim Texte As String
Dim x As Variant
Dim i As Byte
Texte = "Saisissez le texte à rechercher : " & Chr(13)
Texte = Texte & "(séparer les mots par une espace)"
Cherche = InputBox(Texte, "Recherche mot(s) dans une plage de cellule")
If Cherche = "" Then Exit Sub
Texte = Cherche
x = Split(Texte, " ")
For i = 0 To UBound(x)
Set Cell = Cells.Find(x(i), LookIn:=xlValues, Lookat:=xlPart) 'xlpart xlwhole
If Not Cell Is Nothing Then
PremCell = Cell.Address
Do
MsgBox x(i) & Chr(13) & Cell.Address
Cell.Offset(0, -1) = "X"
Set Cell = Cells.FindNext(Cell)
Loop Until Cell.Address = PremCell
Else
MsgBox ("Rien")
End If
Next i
End Sub Mytå
Merci pour la réponse mais j'ai fait ce code qui marche très bien. Cela donne l'équivalent d'une recherche avec ctr+f. A conseiller à tout le monde qui souhaite faire cela!!
Je te le joins si ca peut en aider d'autres
Private Sub CommandButton3_Click()
Dim Mot As String, Trouvé1 As Range, Trouvé2 As Range, Reponse As String
Dim i As Byte
Mot = InputBox("Mot à rechercher ?")
For i = 1 To Sheets.Count
Sheets(i).Select: Set Trouvé1 = Cells.Find(What:=Mot)
If Not Trouvé1 Is Nothing Then
Trouvé1.Activate
With ActiveCell.Characters(Start:=InStr(1, Selection, Left(Mot, 1), 1), Length:=Len(Mot))
Selection.Interior.ColorIndex = 4
Selection.Font.Bold = True
End With
étiq:
Reponse = MsgBox("Poursuivre la recherche ?", vbYesNo)
If Reponse = 6 Then
Selection.Interior.ColorIndex = xlNone
Selection.Font.Bold = False
Else
Selection.Interior.ColorIndex = xlNone
Selection.Font.Bold = False
Exit Sub
End If
Set Trouvé2 = ActiveSheet.UsedRange.FindNext(After:=ActiveCell)
If Trouvé2.Address <> Trouvé1.Address Then
Trouvé2.Activate
With ActiveCell.Characters(Start:=InStr(1, Selection, Left(Mot, 1), 1), Length:=Len(Mot))
Selection.Interior.ColorIndex = 4
Selection.Font.Bold = True
End With
GoTo étiq
End If
End If
Next i
Sheets(1).Activate
Range("A1").Select
End Sub
Amicalement
jj