Bonjour à tous!
Après nombreuses recherches, aujourd'huin'est pas mon ami ^^
En effet, j'ai trouvé des choses qui se rapproche de ce que je cherche mais rien de colle.
Je vous explique, je voudrais mettre les lignes de mon formulaire continu de différentes couleurs en fonction de la valeur d'un des contrôles de la ligne.
Mon formulaire représente une liste de contrats d'assistance pour lesquels j'affiche :
- le nom de la société qui a souscrit le contrat
- le numéro du contrat
- la date de souscription
- la date d'échéance
- plus quelques autres infos
Ce que je voudrais c'est que les contrats dont la date d'échéance :
- est dépassée depuis plus de 3 mois soient en rouge
- est dépassée de moins de 3 mois en orange
- sera atteint à la fin du mois suivant (le mois en cours) en jaune
- va plus loin en blanc
Pour faire cela, j'ai essayé différente chose mais je n'arrive pas au résultat voulu.
J'ai trouvé un tuto qui montrait bien comment changer la couleur ligne par ligne mais c'est avec une liste déroulante (donc pas automatique avec la date).
J'ai essayé la mise en forme conditionnelle sur tous les contrôles avec 3 conditions (mais j'ai du mal avec les expressions surtout au niveau de différence de date).
J'ai essayé de mettre un controle en fond de la longueur et hauteur de la ligne que j'ai fait changer de couleur en vba , ces trucs fonctionnés à moitié (mais peut-être par ma faute) .
J'ai réussi à bien faire correspondre les couleurs, mais toutes les lignes prennaient la couleur de la dernière date.
Après j'ai un doute sur l'endroit où faire l'appel du code![]()
Après j'ai pensé, peut-être utiliser l'objet recordset du formulaire mais là je sais pas trop comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Dim moisEch Dim anEch Dim moisDate Dim anDate If Not IsNull(Me.Date_Echeance) Then moisEch = Month(Me.Date_Echeance) anEch = Year(Me.Date_Echeance) moisDate = Month(Date) anDate = Year(Date) 'si le contrat est termine depuis plus de 3 mois If (DateDiff("m", Date, Me.Date_Echeance) < -3) Then Me.LigneBckgrd.BackColor = 255 'rouge 'sinon Else 's'il est termine If Me.Date_Echeance < Date Then Me.LigneBckgrd.BackColor = 52479 'orange 'ou Else 'qu'il se termine dans les 2 mois If moisEch <= moisDate + 2 And anEch = anDate Then Me.LigneBckgrd.BackColor = 10092543 'jaune 'sinon (toujours valide) Else Me.LigneBckgrd.BackColor = 16777215 'blanc End If End If End If Else Me.LigneBckgrd.BackColor = 16777215 'blanc End If
Donc voilà si vous avez déjà essayé de faire quelque chose de similaire ou que vous ayez une idée pour m'aider je suis preneur.
Merci d'avance pour vos réponses.
Partager