Probleme condition non reconnue

Bonjour,

J'essaye de réalisé un code qui devra :

  • colorer une lige en rouge si la date afficher et antérieur à celle du jour
  • colorer une lige en gris si la date afficher et antérieur à celle du jour et qu'une cellule affiche le mot "oui"

Le problème est que ce mot provient d'une liste à choix multiple et on dirait que le logiciel comprend qu'il y a une condition manquante (quand j'execute uniquement la seconde partie, rien ne se colore) mais qu'il ne comprend pas que ce oui est afficher dans certaines cellules.

Voici mon code :

Sub peremption2()

'jeté à la poubelle
Dim e As Integer
For e = 2 To 9999
        If Cells(e, 3) < Cells(15, 8) And Cells(e, 5) = "Oui" Then
            Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 15
        End If
    Next e

'date de péremption dépassée
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) < Cells(15, 8) Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    End If
Next i

End Sub

J'ai tester en enlevant la condition ET, tout fonctionne. En revanche, si je demande uniquement de colorer en gris si la cellule affiche oui, rien ne se passe.

Quelqu'un aurait la solution ? Merci

Bonjour,

  • colorer une lige en rouge si la date afficher et antérieur à celle du jour
  • colorer une lige en gris si la date afficher et antérieur à celle du jour et qu'une cellule affiche le mot "oui"
Quelqu'un aurait la solution ? Merci

Je pense qu'il y a un problème dans tes conditions

  • colorer une lige en rouge si la date afficher et antérieur à celle du jour et qu'une cellule ne contient pas le mot "oui"
  • colorer une lige en gris si la date afficher et antérieur à celle du jour et qu'une cellule affiche le mot "oui"

Xmenpl Ca ne change rien, tout se colore encore en rouge

Sub peremption2()

'jet? ? la poubelle
Dim e As Integer
For e = 2 To 9999
        If Cells(e, 3) < Cells(15, 8) And Cells(e, 5) = "Oui" Then
            Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 15
        End If
    Next e

'date de peremption depass?e
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    End If
Next i

End Sub

Je vois plutôt dans ce genre là mais sans fichier peux pas tester si je n'ai pas mis un end if de trop

Dim e As Integer
For e = 2 To 9999
        If Cells(e, 3) < Cells(15, 8) Then
        if And Cells(e, 5) = "Oui" Then
            Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 15
       Else
        Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 3
    end if
    end if
  Next e
End Sub

Bonjour,

Essaie ceci :

Public Sub peremption2()
Dim i As Long
    With ActiveSheet
        If Not IsEmpty(.Cells(15, 8)) Then
            For i = 2 To 9999
                If Not IsEmpty(.Cells(i, 3)) And .Cells(i, 3).Value2 < .Cells(15, 8).Value2 Then
                    .Cells(i, 1).Resize(, 6).Interior.Color = IIf(.Cells(i, 5).Value = "Oui", 14277081, 255)
                End If
            Next i
        End If
    End With
End Sub

Je vois plutôt dans ce genre là mais sans fichier peux pas tester si je n'ai pas mis un end if de trop

Dim e As Integer
For e = 2 To 9999
        If Cells(e, 3) < Cells(15, 8) Then
        if And Cells(e, 5) = "Oui" Then
            Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 15
       Else
        Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 3
    end if
    end if
  Next e
End Sub

Avec ce code il se passe l'inverse.. toutes les cellules qui ont une date ultérieure a la date choisi deviennent rouges et le reste ne change pas de couleur.

Je te joint le fichier sur lequel je travail

Bonjour,

Essaie ceci :

Public Sub peremption2()
Dim i As Long
    With ActiveSheet
        If Not IsEmpty(.Cells(15, 8)) Then
            For i = 2 To 9999
                If Not IsEmpty(.Cells(i, 3)) And .Cells(i, 3).Value2 < .Cells(15, 8).Value2 Then
                    .Cells(i, 1).Resize(, 6).Interior.Color = IIf(.Cells(i, 5).Value = "Oui", 14277081, 255)
                End If
            Next i
        End If
    End With
End Sub

Merci mais ma ligne ne se colore toujours pas en gris.

Salut tout le monde,

à tester

Sub peremption2()
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    ElseIf Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) = "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 15

    End If
Next i
End Sub

Salut tout le monde,

à tester

Sub peremption2()
Dim i As Integer
For i = 2 To 10
    If Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    ElseIf Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) = "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 15

    End If
Next i
End Sub

La couleur grise n'apparait toujours pas…

Montrez nous un bout de votre fichier, car chez moi ca fonctionne!

Sub peremption2()

'jeté à la poubelle
Dim e As Integer
For e = 2 To 9999
        If Cells(e, 3) < Cells(15, 8) And Cells(e, 5) = Oui Then
            Range(Cells(e, 1), Cells(e, 6)).Interior.ColorIndex = 3
        End If
Next e

'date de péremption dépassée
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> Oui Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 15
    End If
Next i

End Sub

Ce code fonctionne si j'enlève l'option liste de ma cellule, mais j'ai l'impression que le code régit de manière inversé. Avec ce code c'est la cellule contenant le oui qui est en gris.

Montrez nous un bout de votre fichier, car chez moi ca fonctionne!

Le fichier à été mis dans un précédent commentaire mais le revoici

3liste-produits.xlsm (195.01 Ko)

Pardon, pour tester j'ai mis For i = 2 To 10 au lieu de For i = 2 To 9999

Sub peremption12()
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    ElseIf Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) = "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 15

    End If
Next i
End Sub

Pardon, pour tester j'ai mis For i = 2 To 10 au lieu de For i = 2 To 9999

Sub peremption12()
Dim i As Integer
For i = 2 To 9999
    If Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) <> "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 3
    ElseIf Cells(i, 3) <> "" And Cells(i, 3) < Cells(15, 8) And Cells(i, 5) = "Oui" Then
        Range(Cells(i, 1), Cells(i, 6)).Interior.ColorIndex = 15

    End If
Next i
End Sub

La ligne qui doit être grise est la ligne 6, donc meme avec ton code ça aurait du marcher, je ne comprend pas ce qui coince…

Normal que çà ne fonctionne pas de votre coté

il y a un espace après le Oui dans vos cellules.

du coup il risque pas de trouver "Oui" puisque dans vos cellule c'est "Oui "

à corriger

En retour avec la solution de m3ellem1

Re,

Ma proposition initiale et la suppression de l'espace final pour Oui !...

Cdlt.

CA FONCTIONNE !!! Tous fonctionne correctement, je n'aurais jamais remarqué qu'il y avait un espace à cet endroit.. Merci beaucoup pour votre aide !!

CA FONCTIONNE !!! Tous fonctionne correctement, je n'aurais jamais remarqué qu'il y avait un espace à cet endroit.. Merci beaucoup pour votre aide !!

De rien c'est pour cette raison qu'on demande un fichier exemple afin de tester avec les mêmes éléments

et parfois trouver ce genre d'erreur.

Rechercher des sujets similaires à "probleme condition reconnue"