Mises en Formes conditionnelles, date, couleurs lignes

Bonjour,

Je suis vraiment débutant dans vba.

J'aimerais faire un code qui me permettent la chose suivante :

J'ai un tableau avec un certains nombre de colonne, l es plus importantes sont la :

  • Colonne T qui est un calcul entre la Date d'aujourd'hui placé en D1 au format Date
  • Colonne F qui représente la date de la facture.
  • Colonne Q, que je remplis d'un "R" quand les réglements sont intervenus.

Je voudrais que dès qu'un réglement intervient, la ligne de la colonne A à la colonne Y soit en Bleu

En revanche, si les factures ne sont pas réglées, que les lignes soient de la couleur du nombre de jours depuis la date de la facture (si < 30 Jours Blanc, de 30 à 60 Jours vert, de 60 à 90 Jours jaune, au delà de 90 jours orange).

J'ai cherché un petit moment sur les forums mais sans succès.

J'ai des erreurs au niveau de "Interior.ColorIndex"

Quand je met un "R" dans la cellulle R4, la ligne passe bien au bleu, mais dans les cellules de R5 à R300.

Merci de vos précieux renseignements.

Sub Couleur_Date()

For i = 4 To 300 'rangées de 1 à 300
'condition 1
If Range("Q" & i) = "R" Then 'colonne Q
Range("A" & i, "Y" & i).Interior.ColorIndex = 37 'rangée A:Y Bleu
'condition 2
ElseIf Range("T" & i) < 30 Then 'colonne T
Range("A" & i, "Y" & i).Interior.ColorIndex = 0 'rangée A:X Blanc
'condition 3
ElseIf Range("T" & i) < 60 Then 'colonne T
Range("A" & i, "Y" & i).Interior.ColorIndex = 35 'rangée A:X vert
'condition 4
ElseIf Range("T" & i) < 89 Then 'colonne T
Range("A" & i, "Y" & i).Interior.ColorIndex = 36 'rangée A:X jaune
'condition 5
ElseIf Range("T" & i) > 90 Then 'colonne T
Range("A" & i, "Y" & i).Interior.ColorIndex = 45 'rangée A:X orange
'Pour annuler la couleur des cellules vides
ElseIf Range("T" & i) = "" Then 'colonne A
Range("A" & i, "Y" & i).Interior.ColorIndex = xlNone 'aucune couleur
End If
Next i
End Sub

-- 23 Juin 2011, 15:10 --

Avec le fichier...

bonjour

il me semble ,que ton code n'est pas placé au bon endroit ;il devrait etre dans feuille 3 en selection change et non pas dans un module ,sans la partie sub...()

cordialement

Bonsoir

Comme dit Tulipe Code de Feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("Q:Q")) Is Nothing Then
For i = 4 To 300 'rangées de 1 à 300
'condition 1
If Range("Q" & i) = "R" Then 'colonne Q
Range("A" & i, "Y" & i).Interior.ColorIndex = 37 'rangée A:Y Bleu
End If
Next i
For i = 4 To 300 'rangées de 1 à 300
'condition 1
If Range("Q" & i) = "" Then
    'condition 2
    ElseIf Range("T" & i) < 30 Then 'colonne T
    Range("A" & i, "Y" & i).Interior.ColorIndex = 0 'rangée A:X Blanc
    'condition 3
    ElseIf Range("T" & i) < 60 Then 'colonne T
    Range("A" & i, "Y" & i).Interior.ColorIndex = 35 'rangée A:X vert
    'condition 4
    ElseIf Range("T" & i) < 89 Then 'colonne T
    Range("A" & i, "Y" & i).Interior.ColorIndex = 36 'rangée A:X jaune
    'condition 5
    ElseIf Range("T" & i) > 90 Then 'colonne T
    Range("A" & i, "Y" & i).Interior.ColorIndex = 45 'rangée A:X orange
    'Pour annuler la couleur des cellules vides
    ElseIf Range("T" & i) = "" Then 'colonne A
    Range("A" & i, "Y" & i).Interior.ColorIndex = xlNone 'aucune couleur
End If
Next i
End If
End Sub

Cordialement

Bonjour,

Merci beaucoup Tulipe et Amadéus pour vos explications, j'ai fait les changements, mis dans le code de la feuille. En revanche j'en aurais aussi besoin pour les autres feuilles, il faudras que je le copie-colle dans les autres feuilles a chaque fois?

J'ai un problème dans ce code, le soucis en fait quand je met "R" quand les factures sont réglées, il faudrait que ma ligne soient bleus et non pas de la couleur de la différence entre la date de facture et la date du jour.

En fait, ma condition est la suivante, si il n'y a pas "R" dans la colonne Q, alors appliquer les couleurs en fonction du nombre de jours... Vous pouvez m'aider s'il vous plaît?

Ou juste mettre la condition en dernier dans la boucle suffirait?

Sub Change()

For i = 4 To 300 'rangées de 1 à 300
'condition 1
If Range("Q" & i) = "R" Then 'colonne Q
Range("A" & i, "Y" & i).Interior.ColorIndex = 37 'rangée A:Y Bleu
End If
Next i
For i = 4 To 300 'rangées de 1 à 300
'condition 1
If Range("Q" & i) = "" Then
    'condition 2
   ElseIf Range("T" & i) < 30 Then 'colonne T
   Range("A" & i, "Y" & i).Interior.ColorIndex = 0 'rangée A:X Blanc
   'condition 3
   ElseIf Range("T" & i) < 60 Then 'colonne T
   Range("A" & i, "Y" & i).Interior.ColorIndex = 35 'rangée A:X vert
   'condition 4
   ElseIf Range("T" & i) < 89 Then 'colonne T
   Range("A" & i, "Y" & i).Interior.ColorIndex = 36 'rangée A:X jaune
   'condition 5
   ElseIf Range("T" & i) > 90 Then 'colonne T
   Range("A" & i, "Y" & i).Interior.ColorIndex = 45 'rangée A:X orange
   'Pour annuler la couleur des cellules vides
   ElseIf Range("T" & i) = "" Then 'colonne A
   Range("A" & i, "Y" & i).Interior.ColorIndex = xlNone 'aucune couleur
End If
Next i
End Sub

bonjour

je n'ai pas trp approndi ton probleme ; mais je sais par experience qu'il ny a pas beaucoup de difference entre blanc et rien(xlnone) ; ton interrogation viens peut etre de la ; qu'en pensent les pros

cordialement

Bonsoir

En reprenant à la base une solution MEFC et Change

A tester

Merci Beaucoup Banzai64, c'est impeccable, ça fait exactement ce que je voulais réaliser... Bonne semaine

Rechercher des sujets similaires à "mises formes conditionnelles date couleurs lignes"