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

XL 2019 [VB] Organisation et gestion du ménage et de l'entretien global (à améliorer)... Comment procéder ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthoYS

XLDnaute Barbatruc
Bonjour


Voilà, le classeur joint téléchargeable en bas où ici en cliquant ci-après (>> Classeur9.xlsx <<)...
L'objectif est de trouver un code permettant de colorer de vert les losanges ... du jour concerné qui correspond à aujourd'hui et uniquement si c'est la bonne semaine, etc. et un calendrier (agenda) permettant de savoir quand commence telle semaine etc. dans un second onglet ou un agenda à côté calendrier... ?

On va partir du postulat que la semaine 1 est celle en cours (depuis lundi 3 novembre 2025)...

ce code n'est sans doute pas adapter, comment le modifier en conséquence pour qu'il rende le fichier opérationnel?

VB:
Sub ColorerLosanges()
    Dim wsCalendrier As Worksheet
    Dim wsAgenda As Worksheet
    Dim annee As Integer
    Dim mois As Integer
    Dim premierJour As Date
    Dim dernierJour As Date
    Dim i As Integer, j As Integer
    Dim dateCell As Date
    Dim semaineBonne As Boolean
    Dim numSemaine As Integer

    ' Définir les feuilles
    Set wsCalendrier = ThisWorkbook.Sheets("Calendrier")
    Set wsAgenda = ThisWorkbook.Sheets("Agenda")

    ' Effacer les couleurs existantes
    wsCalendrier.Cells.Interior.ColorIndex = xlNone

    ' Récupérer l'année et le mois (à adapter selon tes besoins)
    annee = wsCalendrier.Range("B1").Value ' Supposons que l'année est en B1
    mois = wsCalendrier.Range("B2").Value  ' Supposons que le mois est en B2

    ' Calculer le premier jour du mois
    premierJour = DateSerial(annee, mois, 1)
    dernierJour = DateSerial(annee, mois + 1, 1) - 1

    ' Boucle pour chaque jour du mois
    For i = 1 To Day(dernierJour)
        dateCell = DateSerial(annee, mois, i)
        numSemaine = DatePart("ww", dateCell, vbMonday) ' Numéro de la semaine

        ' Vérifier si la semaine est "bonne" dans l'onglet Agenda
        semaineBonne = (wsAgenda.Range("B" & numSemaine + 1).Value = "Bonne")

        ' Colorer le losange en vert si la semaine est bonne
        If semaineBonne Then
            ' Supposons que les losanges sont dans la plage D10:AF30 (à adapter selon ton fichier)
            wsCalendrier.Cells(9 + Int((i - 1) / 7), 4 + ((i - 1) Mod 7)).Interior.Color = RGB(0, 255, 0) ' Vert
        End If
    Next i
End Sub

Nota : le code joint n'est pas incorporer dans le fichier (*.xlsx actuellement).
Vous pouvez très bien fournir une copie en *xlsm.



Merci beaucoup d'avance !
 

Pièces jointes

Bonjour,

le dimanche ça doit colorer les losanges du dimanche concerné (si "jour").
et aussi, je ne l'avait pas dit mais colorer A de vert également si losange coloré... uniquement si losange coloré de vert.

Merci !

Voici ce qu'affiche ta version @fanfan38 aujourd'hui :
 
à exploiter, encore bancal... :

Rajout dans ThisWorbook :

VB:
Private Sub Workbook_Open()
    Call ColorerSemaine
End Sub

et dans Module1 :

Code:
Sub ColorerSemaine()
    Dim ws As Worksheet
    Dim today As Date
    Dim weekNum As Integer, currentWeekNum As Integer
    Dim i As Long, j As Long
    Dim firstDayOfWeek As Date, lastDayOfWeek As Date
    Dim dayIndex As Integer
    Dim dayOfWeek As Integer
    
    '--- Paramètres ---
    Set ws = ThisWorkbook.Sheets(1) ' adapte si besoin
    today = Date
    currentWeekNum = DatePart("ww", today, vbMonday, vbFirstFourDays)
    
    '--- Boucle sur les lignes (tâches) ---
    For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        ' Parcourt chaque jour (colonnes B ? H = lundi ? dimanche)
        For j = 2 To 8
            If IsDate(ws.Cells(1, j).Value) Then
                weekNum = DatePart("ww", ws.Cells(1, j).Value, vbMonday, vbFirstFourDays)
                ' Si la cellule correspond à la semaine courante
                If weekNum = currentWeekNum And (weekNum Mod 2) = 1 Then
                    ' Si c’est le jour d’aujourd’hui ? vert
                    If ws.Cells(1, j).Value = today Then
                        ws.Cells(i, j).Interior.Color = RGB(0, 176, 80) ' vert
                        ws.Cells(i, 1).Interior.Color = RGB(0, 176, 80) ' colonne A
                    Else
                        ws.Cells(i, j).Interior.Color = RGB(189, 215, 238) ' bleu clair
                    End If
                Else
                    ' Autres semaines ? ne rien modifier
                End If
            End If
        Next j
    Next i
End Sub
 

Pièces jointes

Ici dans l'exemple, j'ai choisi chaque semaine, mais en semaine 1 ça devrait colorer de vert ici...

Si le choix c'était porté sur "2 Semaines", il aurait fallu colorer le dimanche de la semaine prochaine (soit à partir du 10 novembre).
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…