XL 2016 Mot recherché

dindin

XLDnaute Occasionnel
Bonjour le forum


je n'arrive pas à le faire avec des formules
j'ai un fichier qui sert à rechercher des mots dans une BD.
je joins le fichier type

- le mot recherché se trouve toujours dans la colonne A
- la zone de recherche se trouve toujours dans la colonne C

certains mots se trouve dans plusieurs cellules de la colonne C (toujours des phrases de plusieurs ligne)
la boucle doit rechercher le mot de la colonne A dans la cellule ou les cellules de la colonne C (suivant les nombre des linges)
Ici magasin A1 - se trouve impérativement dans la cellule C1 seulement,
par contre Boutique A2 -se trouve impérativement dans les lignes C5:C18
pour info les mots de la colonne A ne se répètent jamais .
Etc. mot prochain
autrement dit :

je dirai que visuellement la plage de recherche ( colonne C )
- Commence sur la même ligne que le mot cherché et
- s'arrête sur la ligne précédent l'apparition un nouveau de la colonne A.

A4 --> recherche dans C4 ( car mot suivant en A5 )
A5 ---> recherche de C5 à C18 ( car mot suivant en A19 )
A19 --> recherche de C19 à jusqu'au bout si pas de mot qui suit.
Après avoir trouvé le mot dans la phrase , ce dernier se met en gras et passe en bleu
la base contient environ 1000 mots et parfois 5000 linges (Colonne C)
Merci pour votre aide
 

Pièces jointes

  • Mot recherché.xlsx
    11.4 KB · Affichages: 14

dindin

XLDnaute Occasionnel
Bonsoir,
Qu'elle est la régle !
Une boutique est un petit magasin (souvent de marque exclusive exclusif ou fournissant des articles haut de gamme).
cellule C5 le quelle de (boutique ou magasin) doit être en gras et pourquoi ?
Capture.JPG
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous, @dindin,

Voir le fichier joint. Le code (v1) est dans le module Module1.
VB:
Sub ColorerMot()
Dim t, i&, n&, deb&, ii&, derlig&

With Sheets("feuil1")
   t = .Range("a1:a" & .Cells(.Rows.Count, "a").End(xlUp).Row)
   ReDim Preserve t(1 To UBound(t), 1 To 3)
   n = 4: t(4, 2) = 4
   For i = 4 To UBound(t)
      If t(i, 1) <> t(n, 1) And t(i, 1) <> "" Then
         t(n, 3) = i - 1
         n = n + 1: t(n, 1) = t(i, 1): t(n, 2) = i
      End If
   Next i
   derlig = .Cells(.Rows.Count, "c").End(xlUp).Row
   t(n, 3) = derlig

   Application.ScreenUpdating = False
   .Range("c4:c" & derlig).Font.Bold = False
   .Range("c4:c" & derlig).Font.ColorIndex = xlColorIndexAutomatic
   For i = 4 To n
      For ii = t(i, 2) To t(i, 3)
         deb = InStr(1, .Cells(ii, "c"), t(i, 1), vbTextCompare)
         Do While deb > 0
            Cells(ii, "c").Characters(deb, Len(t(i, 1))).Font.Bold = True
            Cells(ii, "c").Characters(deb, Len(t(i, 1))).Font.Color = vbBlue
            deb = InStr(deb + Len(t(i, 1)), .Cells(ii, "c"), t(i, 1), vbTextCompare)
         Loop
      Next ii
   Next i
End With
End Sub

edit : version v2 (un tout petit plus rapide)
 

Pièces jointes

  • dindin- Mot recherché- v1.xlsm
    19.9 KB · Affichages: 5
  • dindin- Mot recherché- v2.xlsm
    20.3 KB · Affichages: 9
Dernière édition:

Discussions similaires

Réponses
2
Affichages
174
Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 395
Messages
2 088 037
Membres
103 705
dernier inscrit
mytek