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