Oui, je veux bien, s'il vous plait. La macro est également incluse dans le fichier que j'ai donné.
Elle est constituée d'un module de classe et un module standard.
Module de classe :
Option Explicit
'Convertir un pourcentage en décimal
Public Function xFPourcentDecimal(vPourcent As String) As Double
'Supprimer les espaces et les caractères non numériques
vPourcent = Trim(vPourcent)
vPourcent = Replace(vPourcent, "%", "")
'Convertir la chaîne en nombre décimal
On Error Resume Next
xFPourcentDecimal = CDbl(vPourcent)
If Err.Number <> 0 Then
xFPourcentDecimal = 0
Err.Clear
End If
On Error GoTo 0
End Function
Module standard :
Option Explicit
'Variables communes pour convertir un pourcentage en décimal de la classe "xFc_Pourcent"
Public vPourcent As New xFc_Pourcent
'Appliquer une couleur Vert dans la feuille "Traitement"
Sub xPColeursTrait()
Dim vValDecimal As Double
Dim vValeurText As String
Dim i As Long, vDernierLig1 As Long
'La formule de la mise en évidence
'=ET($B5=VRAI;$I5>=1)
'Désactiver les événements
xPDesactMiseJour
'La feuille de calcul
xPFeuils
'Créer une instance de la classe xFc_Pourcent
Set vPourcent = New xFc_Pourcent
'La dernière ligne utilisée dans la colonne "C" de la feuille "Traitement"
vDernierLig1 = vDernierLigne.xFcDernierLig(vWS1, "C", 5)
'Appliquer une couleur
For i = 5 To vDernierLig1 'vDernierLigne
'La valeur de la colonne I en tant que texte
vValeurText = vWS1.Cells(i, 9).Text
'Vérifier si la valeur contient un pourcentage
If InStr(vValeurText, "%") > 0 Then
'Convertir la valeur de la colonne "I" en décimal
vValDecimal = vPourcent.xFPourcentDecimal(vValeurText)
If vWS1.Cells(i, 2).Value = True And vValDecimal >= 100 Then
vWS1.Range("B" & i & ":I" & i).Interior.Color = RGB(0, 176, 80) 'Vert
Else
vWS1.Range("B" & i & ":I" & i).Interior.colorIndex = xlNone 'Réinitialiser la couleur de fond
End If
Else
'Si la valeur n'est pas un pourcentage, réinitialiser la couleur de fond
vWS1.Range("B" & i & ":I" & i).Interior.colorIndex = xlNone
End If
Next i
'Résactiver les événements
xPReactMiseJour
End Sub