VBA : Comment mettre en évidence les N premières valeurs dans la colonne
Vous pouvez utiliser la syntaxe suivante dans VBA pour mettre en évidence les N premières valeurs d’une colonne dans Excel :
Sub HighlightTopN()
Dim rng As Range
Dim EntireRange As Range
'specify range to use
Set EntireRange = Range("A2:A11")
'highlight top 3 values in range
For Each rng In EntireRange
For i = 1 To 3
If rng.Value = WorksheetFunction.Large(EntireRange, i) Then
rng.Interior.Color = vbYellow
End If
Next
Next rng
End Sub
Cette macro particulière mettra en évidence les 3 valeurs les plus élevées de la plage A2:A11 .
Pour mettre en évidence un nombre différent de valeurs supérieures, modifiez simplement la ligne For i = 1 To 3 pour avoir une limite supérieure différente.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : mettre en surbrillance les N premières valeurs dans la colonne à l’aide de VBA
Supposons que nous ayons les valeurs suivantes dans la colonne A de notre feuille de calcul Excel :
Nous pouvons créer la macro suivante pour mettre en évidence les 3 premières valeurs les plus grandes de la plage A2:A11 :
Sub HighlightTopN()
Dim rng As Range
Dim EntireRange As Range
'specify range to use
Set EntireRange = Range("A2:A11")
'highlight top 3 values in range
For Each rng In EntireRange
For i = 1 To 3
If rng.Value = WorksheetFunction.Large(EntireRange, i) Then
rng.Interior.Color = vbYellow
End If
Next
Next rng
End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
Notez que les cellules contenant les 3 valeurs les plus élevées dans la colonne A sont désormais mises en surbrillance.
Notez que vous pouvez également modifier la couleur à utiliser pour la mise en surbrillance ainsi que le nombre de valeurs principales à mettre en surbrillance.
Par exemple, nous pouvons utiliser la macro suivante pour mettre en surbrillance les 5 premières valeurs de la colonne A en vert :
Sub HighlightTopN()
Dim rng As Range
Dim EntireRange As Range
'specify range to use
Set EntireRange = Range("A2:A11")
'highlight top 5 values in range
For Each rng In EntireRange
For i = 1 To 5
If rng.Value = WorksheetFunction.Large(EntireRange, i) Then
rng.Interior.Color = vbGreen
End If
Next
Next rng
End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
Notez que les cellules contenant les 5 valeurs les plus élevées dans la colonne A sont désormais surlignées en vert.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :
VBA : Comment appliquer une mise en forme conditionnelle aux cellules
VBA : Comment appliquer une mise en forme conditionnelle aux valeurs en double
VBA : Comment trouver la valeur dans une colonne