Mises en forme conditionnelle, date VBA

Bonjour,

J'ai un problème de mise en forme conditionnelle dans un calendrier. Je vous explique, dans un classeur que je dois faire il y a deux feuilles:

la "feuille A" est un calendrier excel et la "feuille b" contient des informations sur des affaires. Dans cette "feuille b" on trouve des dates de début et de fin de projet, je souhaite colorier dans le calendrier de ma "feuille a" la durée du projet --> date début < X < date de fin, au moyen de VBA. J'arrive à colorier les cases en fonction de résultats chiffrés mais lorsqu'il s'agit de date je n'arrive pas à mettre de rapport d'égalité.

Je ne peux pas utiliser la mise en forme conditionnelle "classique" car d'autres Macro sont déjà en place.

Merci,

Cyprien

PS: Je ne peux pas joindre le fichier pour des raisons de confidentialité

Bonjour Cyprien, et bienvenue sur le forum,

Sans ton fichier on ne peut pas bien comprendre ta demande (on ne sais même pas à quoi ressemble ton calendrier en feuille a) :p

Donc j'ai essayé de faire comme j'ai pu (en interprétant ta demande)!

Ci-dessous le code et ci-joint le fichier test !

Dans le fichier en [A1] clique sur le bouton pour lancer la procédure ;D

Sub Calendrier()
Dim x As Long, y As Long, Color As Long
Dim Day_Déb As Long, Month_Déb As Long
Dim Day_Fin As Long, Month_Fin As Long
Dim a As Range, b As Range
Cells.Interior.Pattern = xlNone
Columns(34).ClearContents
Color = 4
For x = 2 To Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
    If Sheets(2).Cells(x, 5) <> "" And Sheets(2).Cells(x, 6) <> "" Then
        Day_Déb = Day(Sheets(2).Cells(x, 5))
        Month_Déb = Month(Sheets(2).Cells(x, 5))
        Day_Fin = Day(Sheets(2).Cells(x, 6))
        Month_Fin = Month(Sheets(2).Cells(x, 6))
        Set a = Sheets(1).Rows(1).Find(what:=Day_Déb)
        Set b = Sheets(1).Rows(1).Find(what:=Day_Fin)
        If Month_Déb = Month_Fin Then
            Range(Cells(Month_Déb + 1, a.Column), Cells(Month_Déb + 1, b.Column)).Interior.ColorIndex = Color
            Sheets(1).Cells(Range("AH" & Rows.Count).End(xlUp).Row + 1, 34).Interior.ColorIndex = Color
            Sheets(1).Cells(Range("AH" & Rows.Count).End(xlUp).Row + 1, 34) = Sheets(2).Cells(x, 1)
        Else
            Range(Cells(Month_Déb + 1, a.Column), Cells(Month_Déb + 1, 32)).Interior.ColorIndex = Color
            For y = Month_Déb To Month_Fin - 1
                If Month_Déb + 1 = Month_Fin Then Exit For
                Range(Cells(y + 1, 2), Cells(y + 1, 32)).Interior.ColorIndex = Color
            Next
            Range(Cells(Month_Fin + 1, 2), Cells(Month_Fin + 1, b.Column)).Interior.ColorIndex = Color
            Sheets(1).Cells(Range("AH" & Rows.Count).End(xlUp).Row + 1, 34).Interior.ColorIndex = Color
            Sheets(1).Cells(Range("AH" & Rows.Count).End(xlUp).Row + 1, 34) = Sheets(2).Cells(x, 1)
        End If
    End If
    Color = Color + 1
Next
'Formule trouver sur https://www.excel-pratique.com/fr/astuces_vba/Day(DateSerial(Year(CDate("01/" & y & "/2018")), Month(CDate("01/" & y & "/2018")) + 1, 1) - 1)_dans_mois.php
'Adapter :
For y = 1 To 12
    If Day(DateSerial(Year(CDate("01/" & y & "/2018")), Month(CDate("01/" & y & "/2018")) + 1, 1) - 1) <> 31 Then Range(Cells(y + 1, Day(DateSerial(Year(CDate("01/" & y & "/2018")), Month(CDate("01/" & y & "/2018")) + 1, 1) - 1) + 2), Cells(y + 1, 32)).Interior.Color = 4
Next
End Sub

Restant à dispo !

42pour-cyprien.xlsm (25.06 Ko)

Bonjour Juice,

vous trouverez ci-joint des extrait des deux feuilles que je dois lier, car n'ai pas vraiment réussi à appliquer votre macro a mon cas

Merci,

Cyprien

calendrier date

Une ligne est égale à un projet ?

J'ai réussi à trouver une solution une solution à mon problème, merci pour votre aide

Cependant je me trouve maintenant face à un autre problème: Les lignes du calendrier sont ajoutées au moyen d'une macro qui les fait correspondre à une ligne de projet. j'ai ajouter ma macro de mise en forme conditionnelle à la première macro. Cependant si je change les dates dans les lignes projet après avoir créer la ligne de calendrier les couleur ne se mettent bien évidement pas à jour et je ne peux pas séparer les deux macros.

comment puis je faire ?

Merci

Rechercher des sujets similaires à "mises forme conditionnelle date vba"