La procédure suivante me permet de n'afficher que les lignes de ma plage nommée ('liste') dont la cellule B (indiquée via un 'offset') contient une chaîne de caractères donnée (contenue dans la variable 'recherche').
Dim c as range
[liste].EntireRow.Hidden = True
For Each c In [liste]
If c.Offset(0, 1).Value Like '*' & recherche & '*' Then
c.Rows.Hidden = False
End If
J'aimerais, en outre, que la chaîne de caractères puisse s'afficher en gras, dans la cellule, à l'issue de la recherche (un peu comme quand on fait une recherche sur le forum, quoi )
Suis-je trop gourmand ou pensez vous que cela soit possible ?
Pas sur d'avoir compris, mais tu peux peut etre essayer comme ceci :
[liste].EntireRow.Hidden = True For Each c In [liste] If c.Offset(0, 1).Value Like '*' & recherche & '*' Then
c.Rows.Hidden = False
c.Offset(0, 1).Characters(InStr(1, c.Offset(0, 1), recherche), Len(recherche)).Font.Bold = True End If
Voici ta macro modifiée pour pouvoir faire ce que tu aimerai.
Sub cherche()
Dim c As Range
recherche = 'a'
[liste].EntireRow.Hidden = True
For Each c In [liste]
If c.Offset(0, 0).Value Like '*' & recherche & '*' Then
c.Rows.Hidden = False
c.Font.Bold = True
End If
Next c
End Sub
Bonne soirée.
John
Ps : mais la macro de Hervé fonctionne très bien aussi et fait pareil que la mienne :whistle: