Mise en forme conditionnelle avec Excel VBA

Le formatage conditionnel peut être utilisé pour représenter plus clairement les différences et les spécificités au sein d’un ensemble de valeurs associé. Des barres de données, des échelles de couleurs et des jeux de symboles sont utilisés pour le formatage. Cette possibilité n’est disponible que depuis Excel 2007.
Barre de données
À l’aide du programme suivant, les relations de taille d’une série de nombres sont illustrées par des barres de données:

Sub BarreDonnees()
Dim rg As Range
ThisWorkbook.Worksheets("Feuil3").Activate
Set rg = Range("A2:A13")
rg.FormatConditions.Delete
' Générer des barres de données
rg.FormatConditions.AddDatabar
' Modifier la barre de données
rg.FormatConditions(1).BarColor.Color = vbRed
End Sub

Commentaires:
■ La mise en forme conditionnelle d’une cellule ou d’une plage de cellules est enregistrée dans Collection FormatConditions.
■ La méthode Delete () supprime toute mise en forme conditionnelle existante.

■ À l’aide de la méthode AddDatabar (), un objet de la classe Databar est créé. Il s’agit d’une mise en forme conditionnelle sous la forme d’une barre de données.
■ Cette barre de données peut être modifiée. Comme il s’agit du premier formatage conditionnel, il est adressé via l’index 1. Plus tard, une mise en forme conditionnelle supplémentaire pourrait être attribuée à la même cellule ou à la même zone de cellule.
■ La couleur de la barre de données est modifiée via la sous-propriété Color de la propriété BarColor BarColor.
■ Vous pouvez voir le résultat dans la figure suivante.


Échelle de couleurs bicolore
Il est possible de formater la zone de cellule en utilisant une échelle à deux ou trois couleurs. D’abord un exemple avec deux couleurs:

Sub Echelledeuxcouleurs()
Dim rg As Range
ThisWorkbook.Worksheets("Feuil4").Activate
Set rg = Range("A2:A11")
rg.FormatConditions.Delete
' Créer une échelle à deux couleurs
rg.FormatConditions.AddColorScale 2
' Changer l'échelle de deux couleurs
With rg.FormatConditions(1)
.ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
.ColorScaleCriteria(1).FormatColor.Color = _
vbYellow
.ColorScaleCriteria(2).Type = _
xlConditionValueHighestValue

.ColorScaleCriteria(2).FormatColor.Color = _
vbRed
End With
End Sub

 

Commentaires:

■ Tout d’abord, toute mise en forme conditionnelle existante est supprimée.

■ La méthode AddColorScale () est utilisée pour créer un objet de la classe ColorScale. Il s’agit d’une mise en forme conditionnelle sous la forme d’une échelle de couleurs. Le premier paramètre (ColorScaleType) détermine s’il s’agit d’une échelle de couleurs à deux ou trois tons.

■ Pour changer cela, d’autres critères de mise en forme peuvent être ajoutés à une mise en forme conditionnelle de type ColorScale. Tous les critères de mise en forme se trouvent dans la liste ColorScaleCriteria de l’objet ColorScale.

■ Dans le premier critère, la couleur jaune est attribuée à la valeur la plus basse. En outre, la propriété Type du critère reçoit la valeur xlConditionValueLowestValue de l’énumération xlConditionValueTypes. La sous-propriété Color de la propriété FormatColor définit la couleur de la valeur sélectionnée de cette façon fermement.

■ Dans le deuxième critère, la couleur rouge est attribuée à la valeur la plus élevée. Pour cela, l’élément de liste xlConditionValueHighestValue est requis.

Échelle de couleurs tricolore

Un exemple avec trois couleurs suit:

Sub Echellecouleurtricolore()
Dim rg As Range
ThisWorkbook.Worksheets("Feuil5").Activate
Set rg = Range("A1:A15")
rg.FormatConditions.Delete
' Créer une échelle à trois couleurs
rg.FormatConditions.AddColorScale 3
' Changer l'échelle de trois couleurs
With rg.FormatConditions(1)
.ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
.ColorScaleCriteria(1).FormatColor.Color = _
vbGreen
.ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
.ColorScaleCriteria(2).FormatColor.Color = _
vbYellow
.ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
.ColorScaleCriteria(3).FormatColor.Color = _
vbRed
End With
End Sub

 

Commentaires:
■ La méthode AddColorScale () est appelée avec la valeur 3 pour le paramètre Type.
■ Lors du changement, la couleur de l’élément de collection xlConditionValuePercentile est également modifiée. Le centile est une certaine valeur moyenne tirée des statistiques.
Vous pouvez voir le résultat dans la figure suivante.

Jeu de symboles
Au lieu d’utiliser des barres de données ou des couleurs, les rapports de taille d’un certain nombre de nombres peuvent également être illustrés à l’aide de différents symboles, voir le programme ci-dessous:

Sub JeuSymboles()
Dim rg As Range
ThisWorkbook.Worksheets("Feuil6").Activate
Set rg = Range("A1:A15")
rg.FormatConditions.Delete
' Générer un jeu de symboles
rg.FormatConditions.AddIconSetCondition
' Changer le jeu de symboles
With rg.FormatConditions(1)
.IconSet = ActiveWorkbook.IconSets(1)
.IconCriteria(2).Value = 45
.IconCriteria(3).Value = 90
End With
End Sub

 

Commentaires:
■ En utilisant la méthode AddIconSetCondition (), un objet de la classe IconSetCondition est créé. Il s’agit d’une mise en forme conditionnelle sous la forme d’un jeu de symboles.
■ Le type du jeu de symboles peut être modifié. À cette fin, la propriété IconSet de la mise en forme conditionnelle appropriée se voit attribuer un élément de la liste IconSets du classeur actif.

■ Il existe des jeux de symboles avec 3, 4 ou 5 symboles différents. Dans le présent exemple, il s’agit d’un jeu de symboles avec trois symboles. De nouveaux critères sont définis pour les deuxième et troisième symboles.

■ Pour ce faire, la propriété Value de l’élément 2 ou 3 de la collection IconCriteria est modifiée.

■ Si une cellule contient une valeur d’au moins 45% de la valeur maximale de la série, le deuxième symbole est utilisé, à partir de 90% du troisième symbole. Sauf indication contraire, les valeurs limites 34% et 67% s’appliquent.

Excel 2007 proposait déjà 17 jeux de symboles différents. Dans Excel Tous les jeux de symboles 2010, trois autres ont été ajoutés. À l’aide du programme suivant, les 20 jeux de symboles sont clairement affichés:

Sub TouslesJeuxSymboles()
Dim rg As Range
Dim i As Integer
ThisWorkbook.Worksheets("Feuil7").Activate
For i = 1 To 20
Range("A1:A15").Copy Cells(2, i)
Cells(1, i).Value = "S " & i
Set rg = Range(Cells(2, i), Cells(11, i))
rg.FormatConditions.Delete
rg.FormatConditions.AddIconSetCondition
rg.FormatConditions(1).IconSet = _
ActiveWorkbook.IconSets(i)

Next i
End Sub

 

Commentaires:

■ Les valeurs de la première colonne sont copiées dans les colonnes restantes.

■ Une plage de 10 cellules est spécifiée pour chaque mise en forme conditionnelle.

■ La mise en forme conditionnelle est créée et son type est défini sur l’une des 20 valeurs possibles.

 

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x