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

6forum-r7.xlsm (17.06 Ko)

Bonjour

Voici une piste à l'aide de MFC.

8forum-r7-1.xlsm (17.07 Ko)

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.

5forum-r7-2.xlsm (17.04 Ko)

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,

Rechercher des sujets similaires à "jours couleurs gris clair"