Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Vba couleur de cellule en fonction du contenu

Magg

XLDnaute Junior
Bonjour,

Je voudrais faire en sorte que les cellules contenant chaque jour de la semaine se colore d'une certaine façon :
Lundi = vert clair, Mardi = bleu clair, Mercredi = rose, Jeudi = bleu foncé, Vendredi = gris, Samedi = jaune, Dimanche = rouge
Le problème c'est que je ne sais pas comment faire pour l'appliquer à toute la feuille. (pas besoin de faire tous les jours mais au moins m'expliquer pour un ou deux, je l'appliquerai pour le reste)

De plus, comme je complète mon planning grâce à une macro qui mets dans la première colonne vide à droite les données, je me retrouve à avoir des événements par semaine pas par ordre chronologique (exemple : hier j'ai rentré un poste pour le Samedi mais aujourd'hui je dois rentrer un poste pour le Mercredi). Existe-t-il une macro pour trie les événements de la semaine par ordre chronologique ?

Merci d'avance pour vos pistes.
Magg.
 

Pièces jointes

  • Planning macro.xlsm
    67.4 KB · Affichages: 16

James007

XLDnaute Barbatruc
Bonjour,

A adapter à tes besoins ... et à tes couleurs ...

VB:
Sub Couleurs()
Dim i As Long
Dim j As Long
i = 2
    'For i = 2 to 366 Step 7
        For j = 3 To 33 Step 3
            Select Case Application.WorksheetFunction.Weekday(Cells(i, j), 2)
                Case 1
                    ' Lundis
                    Cells(i, j).Interior.Color = RGB(255, 0, 0)
                Case 2
                    ' Mardis
                    Cells(i, j).Interior.Color = RGB(0, 255, 0)
                Case 3
                    ' Mercredis
                    Cells(i, j).Interior.Color = RGB(0, 0, 255)
                Case 4
                    ' Jeudis
                    Cells(i, j).Interior.Color = RGB(125, 125, 125)
                Case 5
                    ' Vendredis
                    Cells(i, j).Interior.Color = RGB(50, 50, 50)
                Case 6
                    ' Samedis
                    Cells(i, j).Interior.Color = RGB(120, 120, 120)
                Case 7
                    ' Dimanches
                    Cells(i, j).Interior.Color = RGB(255, 255, 255)
            End Select
        Next j
    ' Next i

End Sub
 

Magg

XLDnaute Junior
Bonjour James007,

Super c'est ce que j'attendais ! J'ai simplement rectifié les couleurs et enlevé les apostrophes devant "For i" et "Next i".
J'ai aussi essayé de bidouillé pour ne pas colorier les cellules vides parce qu'actuellement si je n'ai pas de date entrée, elles se colorent comme un samedi (case 6). Y-a-t-il une solution pour cela ? Je n'ai pas trouvé.
 

James007

XLDnaute Barbatruc
Content que cela puisse t'aider ...

Ci-dessous la modification pour exclure les cellules vides ...

VB:
Sub Couleurs()
Dim i As Long
Dim j As Long
    For i = 2 to 366 Step 7
        For j = 3 To 33 Step 3
            Select Case Application.WorksheetFunction.Weekday(Cells(i, j), 2)
                If Cells(i, j).Value <> "" Then
                Case 1
                    ' Lundis
                    Cells(i, j).Interior.Color = RGB(255, 0, 0)
                Case 2
                    ' Mardis
                    Cells(i, j).Interior.Color = RGB(0, 255, 0)
                Case 3
                    ' Mercredis
                    Cells(i, j).Interior.Color = RGB(0, 0, 255)
                Case 4
                    ' Jeudis
                    Cells(i, j).Interior.Color = RGB(125, 125, 125)
                Case 5
                    ' Vendredis
                    Cells(i, j).Interior.Color = RGB(50, 50, 50)
                Case 6
                    ' Samedis
                    Cells(i, j).Interior.Color = RGB(120, 120, 120)
                Case 7
                    ' Dimanches
                    Cells(i, j).Interior.Color = RGB(255, 255, 255)
             End If           
            End Select
        Next j
     Next i
End Sub

En espèrant que cela t'aide
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…