Couleur selon nombre contaminé par lettre

Bonjour forum,

Dans un fichier (excel 2010), j'aimerais colorer des celulles selon des conditions:

Dans la colonne "neige": valeur de 10 à 14,9 : la celule est colorée en jaune

valeur de 15 et plus: la celulle est colorée en rouge.

Dans la colonne "pluie": valeur de 25 à 49,9 : la celulle est colorée en jaune

valeur de 50 et plus: la cellule est colorée en rouge.

Jusqu'à maintenant, tout ceci apparait simple avec une mise en forme conditionnelle. Toutefois, il y a une

difficulté supplémentaire: certaines cellules sont accompagnées d'une lettre (qui signifie le statut de la valeur).

Quelqu'un aurait une idée pour exécuter la mise en forme conditionnelle des celulles même si elles sont parfois

contaminées par une lettre?

Je joins un fichier simplifié (le fichier réel compte plus de 125,000 lignes et près de 400 lignes se rajouteront quotidiennement).

Je vous remercie d'avance

Emil

bonjour,

ça me semble compliqué car outre les lettres il y a des virgules ET des points en guise de séparateur décimal : j'y vois pas simple à moins de passer par une macro ?

A+

Bonjour,

Une première solution à tester sur l'ensemble de ton fichier (lenteur probable )

Ctrl+a pour lancer la mise en forme.

Cdlt

Option Explicit
Public Sub Mise_en_Forme()
'Ctrl + a
Dim sH As Worksheet
Dim derLigne As Long
Dim i As Long
Dim a As String

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With

    Set sH = Worksheets("Feuil1")

        With sH
            derLigne = Range("A" & Rows.Count).End(xlUp).Row
            'MsgBox derLigne
        End With

        For i = 2 To derLigne Step 1
            'pluie
            If IsNumeric(Cells(i, 3)) And Cells(i, 3) >= 25 And Cells(i, 3) < 50 Then
                Cells(i, 3).Interior.Color = 65535  'jaune
            End If
            'neige
            If IsNumeric(Cells(i, 4)) And Cells(i, 4) >= 10 And Cells(i, 4) < 15 Then
                Cells(i, 4).Interior.Color = 65535  'jaune
            End If
            'pluie
            If IsNumeric(Cells(i, 3)) And Cells(i, 3) >= 50 Then
                Cells(i, 3).Interior.Color = 255    'rouge
            End If
            'neige
            If IsNumeric(Cells(i, 4)) And Cells(i, 4) > 15 Then
                Cells(i, 4).Interior.Color = 255    'rouge
            End If
            'pluie
            If Not IsNumeric(Cells(i, 3)) Then
                a = SansTexte(Cells(i, 3)) * 1
                    If a >= 25 And a < 50 Then
                        Cells(i, 3).Interior.Color = 65535  'jaune
                    End If
                    If a > 50 Then
                        Cells(i, 3).Interior.Color = 255    'rouge
                    End If
            End If
            'neige
            If Not IsNumeric(Cells(i, 4)) Then
                a = SansTexte(Cells(i, 4)) * 1
                    If a >= 25 And a < 50 Then
                        Cells(i, 4).Interior.Color = 65535  'jaune
                    End If
                    If a > 50 Then
                        Cells(i, 4).Interior.Color = 255    'rouge
                    End If
            End If
        Next i

    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub
Private Function SansTexte(c)
Dim obj
Dim chaine
'Supprime texte dans cellule
    Application.Volatile
    Set obj = CreateObject("vbscript.regexp")
    obj.Global = True
    obj.Pattern = "[a-z,A-Z,_]+"
    'obj.Pattern = "\d+"
    chaine = c.Value
    chaine = obj.Replace(c, "")
    SansTexte = Trim(chaine)
End Function

Bonjour

Pas ma faute mais j'avais du temps

26emil-mefc-v001.xlsx (49.92 Ko)

Bonjour Jean-Éric et Banzai,

j'ai examiné vos deux solutions et je dois avouer qu'il m'a pris un certain temps avant de maitriser vos solutions notamment avec les formules de Banzai où je ne cessais d'avoir des fautes de frappe (et à me demander pourquoi ça ne fonctionnait pas chez moi). Très fort...

Je dois avouer que la solution de Banzai me convient mieux puisqu'elle conserve les lettres dans les cellules.

Voilà, je vous remercie encore

Emil

Rechercher des sujets similaires à "couleur nombre contamine lettre"