VBA : fonction "mise en forme conditionnelle" personnalisable

Résolu/Fermé
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - Modifié par Arkana0 le 5/02/2016 à 17:10
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 6 févr. 2016 à 22:37
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 :
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:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
5 févr. 2016 à 19:27
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
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
6 févr. 2016 à 22:37
Donc dans mon cas, je ferais mieux de partir sur une variable permettant d'alterner entre ces deux constantes selon le besoin.
Merci pour la précision
0