3 votes

VBA si les 6 premiers caractères dans une cellule NE sont PAS égaux à 01/01, then

J'espère que vous pourrez m'aider. J'ai un morceau de code ci-dessous et il ne semble pas fonctionner correctement

Ce que je veux que le code fasse est le suivant

si les 6 premiers caractères de n'importe quelle cellule sur toute la longueur de la colonne L ne contiennent pas 01/01/, alors surlignez cette cellule avec une couleur intérieure 27

Actuellement, comme vous pouvez le voir dans la capture d'écran 1, chaque cellule de la colonne L est surlignée avec une couleur intérieure 27, seules les cellules L2 et L5 devraient être colorées.

Mon code est ci-dessous, peut-il être modifié pour ne surligner que les cellules qui ne contiennent pas 01/01/ en tant que les premiers 6 caractères dans la colonne L

> PS l'approche de la mise en forme conditionnelle n'est pas une option

Comme toujours, toute aide est grandement appréciée.

Capture d'écran 1 description de l'image

MON CODE

Sub Colour_If()
    RowCount = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    For Each n In Range("L2:L" & RowCount)
        n = Left(n, 6)
        If n <> "01/01/" Then
        Range("L2:L" & RowCount).Interior.ColorIndex = 24

        End If
    Next n

2voto

KoderM16 Points 162

Utilisez plutôt ceci:

Sub Couleur_Si()

lRow = Cells(Rows.Count, 12).End(xlUp).Row

For i = 2 To lRow
If Left(Cells(i, 12), 6) <> "01/01/" Then
Cells(i, 12).Interior.ColorIndex = 24
Else
End If
Next i

End Sub

2voto

UGP Points 1539
Sub Couleur_Si()
Dim sht As Worksheet
Dim NbLigne as Long
Set sht = Worksheets("Feuille1")
    NbLigne = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    For i = 2 To NbLigne
        With sht
            n = Left(.Cells(i, 12).Value, 6)
            If n <> "01/01/" Then
                .Cells(i, 12).Interior.ColorIndex = 24
            Else
                .Cells(i, 12).Interior.ColorIndex = 0
            End If
        End With
    Next i
End Sub

1voto

Shai Rado Points 28722

Lorsqu'il s'agit de Dates, cela peut devenir un peu délicat, j'ai utilisé l'opérateur Like avec le joker *, et lu la propriété Text de la cellule.

Option Explicit

Sub Colour_If()

    Dim RowCount As Long
    Dim n As Range

    ' toujours définir votre feuille de calcul, ne pas compter sur ActiveSheet
    With Worksheets("NomDeVotreFeuille") '<-- à modifier avec le nom de votre feuille
        RowCount = .Cells(.Rows.Count, "L").End(xlUp).Row
        For Each n In .Range("L2:L" & RowCount)
            If Not n.Text Like "01/01/*" Then ' vérifiez que les 6 premiers caractères ne commencent pas par "01/01/"
                n.Interior.ColorIndex = 24
            End If
        Next n
    End With

End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X