Mise en forme de police en fonction de dates

Bonjour,

J'ai récupérer un fichier excell que j'essaie de transformer pour arriver à mes fins. Le fichier est joint ci dessous.

Dans l'onglet MC, j'ai en colonne des postes pour lesquels des dates sont renseignées et en ligne des personnes (ici A, B,C,...). Ces dates sont valables 730 jours (ligne 4) après quoi le poste doit être revu. Lorsque la révision arrive à 90 jours, la cellule concernée devient orange, en dessous de 30 elle devient rouge, entre 30 et 90 elle est orange clair (via une mise en forme conditionnelle). J'aimerai que lorsqu'une des dates renseignées est rouge sur la ligne, la police de la cellule F correspondante devienne rouge aussi. Si une des dates est orange foncée, il faudrait que la cellule F devienne orange foncé (sauf si une date est rouge, auquel cas F doit être rouge) . Si toutes les dates sont verts, F doit être vert. J'aimerai que cela fonctionne pour toutes les lignes et que ça s'actualise dès modification d'une des dates.

De plus, dans l'onglet CI, les fonctions utilisées à partir de G7 ne fonctionne pas sous excell 2007 et 2010 (fonction xlnf), serait-il possible de contourner le problème en vba , idem pour la formule DD à DG ?

Pouvez-vous m'aider ?

Merci à tous.

Raphael.

Bonjour

Ci joint ma solution

14fichier-test-hab.zip (174.62 Ko)

A+ François

Super, merci beaucoup, ça fonctionne nickel...

Bonsoir,

le fichier fournit ne résout entièrement mon problème.

J'aimerai que lorsqu'une des dates renseignées est rouge sur la ligne, la police de la cellule F correspondante devienne rouge aussi. Si une des dates est orange foncée, il faudrait que la cellule F devienne orange foncé (sauf si une date est rouge, auquel cas F doit être rouge) . Si toutes les dates sont verts, F doit être vert. J'aimerai que cela fonctionne pour toutes les lignes et que ça s'actualise dès modification d'une des dates.

Dans le fichier fournit, la modification se produit bien lorsque la date est rouge mais si je place derrière cette date, une date verte, la police en F devient verte alors qu'elle devrait rester rouge...

Merci pour votre aide.

Bonjour

MFC modifiées

A+ François

Bonjour Francois,

On n'y est toujours pas, désolé ;)

En fait je crois que ma demande n'est pas claire.

J'utilise le code VBA suivant mais il ne fonctionne que de gauche à droite (et pas de droite à gauche).

Auriez-vous une modification à proposer pour qu'il fonctionne dans les 2 sens ?

Voici le code VBA :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim todayDate As Date
Dim g4Value As Long
Dim d11Value As Long
Dim d12Value As Long
Dim maxDate As Date
Dim nameCell As Range
Dim cellRow As Range
Dim cell As Range
Dim cellColor As Long

Application.EnableEvents = False

' Récupérer la date du jour depuis D3
todayDate = Me.Range("D3").Value

' Récupérer les valeurs de G4, D11, et D12
g4Value = Me.Range("G4").Value 'durée de validité'
d11Value = Me.Range("D11").Value 'alarme à 30jours (orange clair)'
d12Value = Me.Range("D12").Value 'alarme à 90jours (orange clair)'

' Définir la date maximale (date du jour + 730 jours)
maxDate = todayDate + 730

' Boucle pour chaque ligne de 7 à 107
For i = 7 To 107
' Définir la plage de dates (G7:BL7) pour la ligne actuelle
Set cellRow = Me.Range("G" & i & ":BL" & i)

' Définir la cellule du nom (F7:F107) pour la ligne actuelle
Set nameCell = Me.Cells(i, 6) ' Colonne F

' Réinitialiser la mise en forme
nameCell.Font.Color = RGB(0, 0, 0) ' Noir (couleur de police par défaut)
nameCell.Font.Bold = False

cellColor = RGB(0, 0, 0) ' Couleur de base (noir)

' Vérifier si une des dates dans la ligne satisfait les conditions
Dim cellHasColor As Boolean
cellHasColor = False

For Each cell In cellRow
If Not IsEmpty(cell.Value) And IsDate(cell.Value) Then
Dim cellDate As Date
cellDate = CDate(cell.Value)

If cellDate < todayDate - g4Value Then
cellColor = RGB(255, 0, 0) ' Rouge
cellHasColor = True
ElseIf cellDate >= todayDate - g4Value And cellDate <= todayDate - g4Value + d11Value Then
cellColor = RGB(255, 140, 0) ' Orange foncé
cellHasColor = True
ElseIf cellDate > todayDate - g4Value + d12Value And cellDate <= maxDate Then
cellColor = RGB(0, 128, 0) ' Vert
cellHasColor = True
ElseIf cellDate > todayDate - g4Value + d11Value And cellDate <= todayDate - g4Value + d12Value Then
cellColor = RGB(255, 192, 0) ' Orange clair
cellHasColor = True
End If
End If
Next cell

' Mettre à jour la couleur
If cellHasColor Then
nameCell.Font.Color = cellColor
End If
Next i

Application.EnableEvents = True
End Sub

Merci.

Raphael.

Bonjour

Quand tu mets du code utilises </>.... Ci dessus

Je ne comprends pas ce qui cloche avec les mfc...

Mais ta macro, de gauche à droite ou de doite à gauche

Analyse une cellule, en fonction de sa valeur met la cellule de la colonne F en couleur

Ensuite tu analyses la cellule d'à coté et si la valeur est differente la colonne F change de couleur...

Alors que tu as ou sur la feuille CI ou dans les colonnes DE à DG le resultat qui te permet d'affecter une couleur...

A+ Francois

Ton fichier avec une macro...

A+ François

Bonjour François,

J'ai encore omis un besoin dans le fichier. Je souhaite qu'il y ait une gradation en fonction des couleurs.

En fait si sur la ligne 7 (de G7 à DB7), j'ai une cellule rouge, je souhaite que la couleur de la police en F7 soit rouge. Si je n'ai pas de cellule rouge sur la ligne, mais une orange foncée, je souhaite que F7 soit orange foncé. De même si je n'ai ni de rouge, ni d'orange foncé sur la ligne mais une cellule orange clair, alors je voudrais que F7 soit orange clair et si toutes la ligne est verte, alors F7 serait vert. Il faudrait aussi dès qu'une cellule change de couleur, le calcul se réinitialise pour mettre à jour F7. Et de même pour toutes les lignes suivantes (de ligne 7 à ligne 107).

J'espère avoir été plus clair dans mes souhaits. Je te remercie déjà pour toutes tes réponses.

Raphael.

Rechercher des sujets similaires à "mise forme police fonction dates"