7 jours, 7 couleurs en A:A et gris, gris clair en C:C
Bonsoir à tous,
Voilà dans le fichier joint, je tente de faire pour que chaque jour ai sa couleur, mais j'ai du mal à le faire pour toute la colonne de manière automatique : exemple si la cellule contient lundi telle couleur mardi telle couleur et dans la colonne C si elle contient des données rendre le background en gris, puis la suivante en gris claire, puis en gris etc...
Dans le code suivant je n'ai réussi à faire ce que je veux que pour 7 cellules en colonne A, j'ai pensé faire une boucle mais ca ne marche pas. Pour la colonne C je ne vois pas comment dir en vba gris ou gris claire une fois sur deux. J'ai coloré manuellement en colonne C pour donner un exemple.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value = "Lundi" Then
Range("A1").Interior.Color = RGB(255, 153, 153)
Else
Range("A1").Interior.Color = xlNone
End If
If Range("A2").Value = "Mardi" Then
Range("A2").Interior.Color = RGB(255, 179, 128)
Else
Range("A2").Interior.Color = xlNone
End If
If Range("A3").Value = "Mercredi" Then
Range("A3").Interior.Color = RGB(255, 255, 153)
Else
Range("A3").Interior.Color = xlNone
End If
If Range("A4").Value = "Jeudi" Then
Range("A4").Interior.Color = RGB(255, 204, 255)
Else
Range("A4").Interior.Color = xlNone
End If
If Range("A5").Value = "Vendredi" Then
Range("A5").Interior.Color = RGB(219, 255, 219)
Else
Range("A5").Interior.Color = xlNone
End If
If Range("A6").Value = "Samedi" Then
Range("A6").Interior.Color = RGB(219, 219, 255)
Else
Range("A6").Interior.Color = xlNone
End If
If Range("A7").Value = "Dimanche" Then
Range("A7").Interior.Color = RGB(200, 200, 200)
Else
Range("A7").Interior.Color = xlNone
End If
End Sub
Pouvez-vous m'apportez vos lumières ?
Merci
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim clr, k%, i%, jsx$
clr = Array(xlNone, RGB(200, 200, 200), RGB(255, 153, 153), RGB(255, 179, 128), RGB(255, 255, 153), _
RGB(255, 204, 255), RGB(219, 255, 219), RGB(219, 219, 255), RGB(191, 191, 191), RGB(242, 242, 242))
If Target.Column = 1 Then
jsx = LCase(Target.Value)
For i = 1 To 7
If WeekdayName(i, , 1) = jsx Then k = i: Exit For
Next i
ElseIf Target.Column = 3 Then
If Target.Value <> "" Then k = 8 + (Target.Row Mod 2)
End If
Target.Interior.Color = clr(k)
End Sub
Cordialement.
Petite modification à apporter (tu vas pouvoir le faire toi-même :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim clr, k%, i%, jsx$
clr = Array(xlNone, RGB(200, 200, 200), RGB(255, 153, 153), RGB(255, 179, 128), RGB(255, 255, 153), _
RGB(255, 204, 255), RGB(219, 255, 219), RGB(219, 219, 255), RGB(191, 191, 191), RGB(242, 242, 242))
If Target.Column = 1 Or Target.Column = 3 Then
If Target.Column = 1 Then
jsx = LCase(Target.Value)
For i = 1 To 7
If WeekdayName(i, , 1) = jsx Then k = i: Exit For
Next i
ElseIf Target.Column = 3 Then
If Target.Value <> "" Then k = 8 + (Target.Row Mod 2)
End If
Target.Interior.Color = clr(k)
End If
End Sub
Parties surlignées à ajouter.
La version précédente t'empêcherait de mettre toute couleur ailleurs !
Cordialement.
Je suis navré du retard de ma réaction je viens juste de rentrer.
@MFerrand :
Chapeau bas monsieur MFerrand, ca se lit comme un poème, c'est de la mécanique de précision Suisse comme à votre habitude.
Je vous remercie beaucoup.
@PapouMac :
Un grand merci pour votre idée également, cependant j'aurais une question à vous poser avant de cloturer, car vos la coloration
continue à se faire au delà de D$1:D$7. Si j'écris en d8 il à joute à la règle D$1:D$8 et ainsi de suite et je ne comprends pas.
Pouvez-vous me donner une petite explication, je vous remercie.
Règles MFC dans le fichier
Colonne C
=ESt.PAIR(LIGNE) =$C$1:$C$7
=ESt.IMPPAIR(LIGNE) =$C$1:$C$7
Colonne D
La valeur de la cellule contient
Texte spécifique contenant Dimanche =$D$1:D$7
Texte spécifique contenant Lundi =$D$1:D$7
Bonjour
Apparemment lors de la recopie la MFC est elle aussi recopiée, le moyen pour éviter cela c'est de ne pas faire de recopie, dans le fichier fourni après dimanche j'ai mis lundi et de là on peut faire une recopie sans la MFC.
Pour la colonne C :
Ligne(), revoit le numéro de la ligne, donc si l'on se trouve sur la ligne 1, celle-ci est impaire donc c'est la MFC =EST.IMPAIR(LIGNE()) qui s'applique, dans le cas contraire c'est la MFC =EST.PAIR(LIGNE()) qui s'applique.
C'est super, j'ai les deux méthodes super efficaces pour faire le coloriage de cellules de manière automatique encore un grand merci vous êtes formidables ! Je ✔ le topic,