VBA : fonction "mise en forme conditionnelle" personnalisable
Résolu
Arkana0
Messages postés
6902
Date d'inscription
Statut
Modérateur
Dernière intervention
-
Arkana0 Messages postés 6902 Date d'inscription Statut Modérateur Dernière intervention -
Arkana0 Messages postés 6902 Date d'inscription Statut Modérateur Dernière intervention -
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
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
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