Dans cet article, nous utiliserons la méthode find de l’objet Range pour mettre en surbrillance la cellule qui contient la valeur similaire aux mots de recherche.

Les données brutes de cet exemple se composent du nom de l’entreprise, de l’ID d’employé et du nom de l’employé. Nous avons des données brutes provenant de différentes entreprises.

Dans cet exemple, nous voulons rechercher et mettre en évidence la cellule qui correspond au nom de société défini dans la cellule I8.

ArrowRawData

Pour mettre en évidence les cellules avec des noms de société particuliers, entrez le nom de la société dans la cellule I8 et cliquez sur le bouton «Soumettre». Le bouton «Soumettre» est associé à la macro «HighlightMatchingResult».

ArrowCallingFunction

La macro «HighlightMatchingResult» mettra en évidence la cellule qui contient le nom de la société correspondant avec la couleur jaune.

ArrowOutput

Explication logique

Dans cet exemple, nous avons créé une fonction personnalisée «FindRange» et une macro «HighlightMatchingResult».

La fonction personnalisée «FindRange» créera une plage avec toutes les cellules contenant une valeur similaire au nom de l’entreprise recherché.

La macro «HighlightMatchingResult» appelle la fonction personnalisée et met en évidence la plage renvoyée par la fonction personnalisée en couleur jaune.

Explication du code

SearchRange.Find (Quoi: = FindItem)

Le code ci-dessus est utilisé pour trouver la cellule qui contient une valeur similaire à FindItem.

Union (FindRange, MatchingRange)

Le code ci-dessus est utilisé pour combiner deux plages en une seule plage.

SearchRange.FindNext (MatchingRange)

Le code ci-dessus est utilisé pour trouver la cellule suivante qui contient une valeur similaire à FindItem.

Veuillez suivre ci-dessous pour le code

Option Explicit

Function FindRange(FindItem As Variant, SearchRange As Range) As Range

'Declaring variables

Dim MatchingRange As Range

Dim FirstAddress As String

With SearchRange



'Finding the range whose value match with FindItem

Set MatchingRange = .Find(What:=FindItem)



'Checking whether any match exist

If Not MatchingRange Is Nothing Then



Set FindRange = MatchingRange

'Getting the address of first matching range

FirstAddress = MatchingRange.Address



Do

'Union of all the ranges whose value match with FindItem

Set FindRange = Union(FindRange, MatchingRange)

'Finding the next range whose value match with FindItem

Set MatchingRange = .FindNext(MatchingRange)

Loop While MatchingRange.Address <> FirstAddress

End If



End With

End Function

Sub HighlightMatchingResult()

'Declaring variables

Dim MappingRange As Range

Dim UserInput As String

'Getting value input by user from cell I8

UserInput = Range("I8").Value

'Calling FindRange custom function

Set MappingRange = FindRange(UserInput, ActiveSheet.Columns("A"))

'Highlighting the mapped range with Yellow color

MappingRange.Interior.Color = RGB(255, 255, 0)

End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]