VBA : fonction "mise en forme conditionnelle" personnalisable
Résolu
Arkana0
Messages postés
6902
Statut
Modérateur
-
Arkana0 Messages postés 6902 Statut Modérateur -
Arkana0 Messages postés 6902 Statut Modérateur -
Bonjour,
Dans le cadre d'une macro sur Excel, j'utilise une fonction pour appliquer une mise en forme conditionnelle sur différentes cellules que je crée.
Je rencontre juste un problème : je souhaite que la comparaison puisse varier selon les cas. Je dois donc transmettre en argument de ma fonction "xlGreater" ou "xlEqual" mais je ne sais pas du tout quel type de variable y attribuer...
Je peux contourner le problème en transmettant une variable integer et utiliser des conditions, mais c'est tout de suite moins élégant...
Pour info voici le code que j'utilise :
Dans le cadre d'une macro sur Excel, j'utilise une fonction pour appliquer une mise en forme conditionnelle sur différentes cellules que je crée.
Je rencontre juste un problème : je souhaite que la comparaison puisse varier selon les cas. Je dois donc transmettre en argument de ma fonction "xlGreater" ou "xlEqual" mais je ne sais pas du tout quel type de variable y attribuer...
Je peux contourner le problème en transmettant une variable integer et utiliser des conditions, mais c'est tout de suite moins élégant...
Pour info voici le code que j'utilise :
Private Sub MiseEnFormeConditionnelle(Ligne As Integer, Colonne As Integer, Condition As String)
'Ligne et colonne permettent évidemment de localiser la cellule sur laquelle appliquer la mise en forme conditionnelle
'Condition représente en fait la valeur à laquelle comparer le résultat de la cellule. Le type de comparaison est défini ci-après
With Cells(Ligne, Colonne)
.FormatConditions.Delete 'Supprime les éventuelles mises en formes conditionnelles déjà créées (cas de plusieurs relance de la mise en forme du diag)
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:=Condition
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End Sub
A voir également:
- VBA : fonction "mise en forme conditionnelle" personnalisable
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Bonjour,
xlGreater et xlEqual sont 2 constantes XlFormatConditionOperator. Il s'agit d'une énumération, à déclarer comme Long alors pour les remplacer.
https://docs.microsoft.com/en-us/office/vba/api/Excel.XlFormatConditionOperator
xlGreater et xlEqual sont 2 constantes XlFormatConditionOperator. Il s'agit d'une énumération, à déclarer comme Long alors pour les remplacer.
https://docs.microsoft.com/en-us/office/vba/api/Excel.XlFormatConditionOperator
Merci pour la précision