Recherche mot et le mettre en gras et en bleu

Bonjour le forum

je suis novice en VBA

c'est la 1 ère fois que j'utilise ce Forum

j'arrive pas à la 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

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

12mot-recherche.xlsx (11.40 Ko)

Salut dindino,

le mot "magasin" se retrouve quasi dans chaque ligne!

Pourquoi ?

dans la cellule C1 seulement

A+

Salut dindino,

le mot "magasin" se retrouve quasi dans chaque ligne!

Pourquoi ?

dans la cellule C1 seulement

A+

Bonjour Dindino

Hello Curulis d'après ce que je peux voir sur son fichier :

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.

Si ma traduction est bonne ?

C'est pas gagné pour définir les plages

Parfait c'est exactement ça

Merci

La boucle recherche dans la colonne c jusqu'à la dernière ligne avant le prochain mot de la colonne A et ainsi de suite.

Salut dindino,

le mot "magasin" se retrouve quasi dans chaque ligne!

Pourquoi ?

dans la cellule C1 seulement

A+

Bonjour Dindino

Hello Curulis d'après ce que je peux voir sur son fichier :

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.

Si ma traduction est bonne ?

C'est pas gagné pour définir les plages

c'est vrai que certaines phrase peuvent se répéter dans la colonne C.

ce qui est certain:

  • le mot recherché se trouve impérativement dans la cellule ou la plage de la Colonne C
  • le mot sera recherché une seule fois car il ne se répète pas dans la colonne A
la zone de recherche de chaque mot est bien définie .elle commence par la cellule de la même ligne te peut aller jusqu’à la ligne précédent l'apparition un nouveau de la colonne A.

Salut dindino,

le mot "magasin" se retrouve quasi dans chaque ligne!

Pourquoi ?

dans la cellule C1 seulement

A+

oui parfois la même phrase peut se répéter plusieurs fois dans la colonne C pour la recherche d'autres mots

Salut dindino,

Salut Xmenpl,

merci, Xmenpl! Belle interprétation!

La macro démarre sur un changement en [A:A]...

A toi de nous dire comment tu vois le fonctionnement de ton fichier!

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim tSplit, iStart%, sItem$
'
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    Range("C:C").Font.Bold = False
    Range("C:C").Font.ColorIndex = 1
    For x = 4 To Range("C" & Rows.Count).End(xlUp).Row
        If Range("A" & x).Value <> "" Then sItem = LCase(Range("A" & x).Value)
        Range("C" & x).Replace Chr(160), Chr(32)
        If InStr(LCase(Range("C" & x).Value), sItem) > 0 Then
            iStart = 1
            tSplit = Split(Range("C" & x).Value, " ")
            For y = 0 To UBound(tSplit)
                If LCase(tSplit(y)) = sItem Then
                    With Range("C" & x).Characters(iStart, Len(tSplit(y)))
                        .Font.Bold = True
                        .Font.ColorIndex = 5
                    End With
                End If
                iStart = iStart + Len(tSplit(y)) + 1
            Next
        End If
    Next
End If
'
Application.ScreenUpdating = True
'
End Sub

A suivre, sans doute...

A+

10dindino.xlsm (18.02 Ko)

Plus que merveilleux

travail au Top

tu m'a fais gagner un temps fou

Un très grand Merci

Encore merci

ça me va très bien

Rechercher des sujets similaires à "recherche mot mettre gras bleu"