message d'alerte en fonction d'une date

stephi

XLDnaute Nouveau
bonjouyr à tous.

voila mon problême.

j ai un parc de véhicules qui doivent subir une révision chacun à une date X.

Je dois prendre les rendez vous 2 mois avant cette date et j aimerai un message d'alerte qui s'affiche à l ouverture de mon tableau si je suis 2 mois(60jours pour simplifier) avant la date d'un véicule.

supposons 3 véhicules

véhicule Date révision
A 01/01/2010
B 15/02/2010
c 25/03/2010

et une cellule à la date du jour avec =AUJOURDHUI()

Est il possible d'avoir un petit message du style véhicule A à réviser si on est 60jours avant le 01/01/2010 par exemple.

merci de vos lumières et de votre aide ou de pistes.

steph
 

stephi

XLDnaute Nouveau
Re : message d'alerte en fonction d'une date

salut Jean Marcel.

je regarde ça . mais juste une petite question. si la date de révision n est pas dans la colonne d a coté du véhicule. Supposons dans la colonne F. que faut il caanger a ton code.

je debute en vb.

merci a toi

steph
 

Hulk

XLDnaute Barbatruc
Re : message d'alerte en fonction d'une date

Bonjour le forum, Jean-Marcel, Stephi,

Me permets de répondre pour Jean-Marcel...

Juste remplacer comme ceci
Code:
Private Sub Workbook_Open()
    Dim Cell As Range
    For Each Cell In Sheets("Feuil1").Range("A2" & ":A" & Range("A65536").End(xlUp).Row)
    If CLng(Cell.Offset(0, [COLOR="Green"][B]5[/B][/COLOR])) - 60 < CLng(Date) Then ' 5 pour la sixième colonne (F) moins la première colonne (A) = 5
    MsgBox " Le véhicule : " & Cell & " devra passer en révision le : " & CDate(Cell.Offset(0, [COLOR="green"][B]5[/B][/COLOR])) 'Idem ici
    End If
    Next
End Sub
C'est exactement le même code, sauf les Cell.Offset(0, 5) qui changent.

Evidemment, tu places tes dates en colonne F.

Cdt, Hulk.
 

noviceAG

XLDnaute Impliqué
Re : message d'alerte en fonction d'une date

Bonjour stephi, Jean-Marcel, Hulk, le Forum,
Merci pour cet exemple qui m'intéresse et permettez-moi de poser une question :
Peut-on faire que pour le dit véhicule le fond de la cellule se mettre en couleur (orange ou rouge)
En vous remerciant
 

Hulk

XLDnaute Barbatruc
Re : message d'alerte en fonction d'une date

Re,

Essaie comme ceci
Code:
Private Sub Workbook_Open()
    Dim Cell As Range
    For Each Cell In Sheets("Feuil1").Range("A2" & ":A" & Range("A65536").End(xlUp).Row)
    If CLng(Cell.Offset(0, 1)) - 60 < CLng(Date) Then
    Cell.Interior.ColorIndex = 3
    Cell.Offset(0,1).Interior.ColorIndex = 3 ' Si tu veux aussi la cellule avec la date en rouge
    MsgBox " Le véhicule : " & Cell & " devra passer en révision le : " & CDate(Cell.Offset(0, 1))
    Else
    Cell.Interior.ColorIndex = xlNone
    Cell.Offset(0,1).Interior.ColorIndex = xlNone ' Et ça
    Exit Sub
    End If
    Next
End Sub
Mais peut-être mieux (?) de mettre ce code dans le Worksheet_Change de la feuille... à vous de voir.

Cdt, Hulk.
 
Dernière édition:

stephi

XLDnaute Nouveau
Re : message d'alerte en fonction d'une date

re Hulk

je viens de remarquer un truc, j ai mis 2 véhicules avec la même date de controle et avec ton dernier code pour la couleur, ça ne m alerte que pour le premier et pas le deuxième véhicule, alors que ton code sans les couleurs me disait: vehicule A le 01..... et vehicule B le même date donc.

et aussi à partir du moment ou j ai dépassé le - 60, chaque fois que j ouvrirai mon fichier, j aurai le message. tu vois, -59, -58,-57 etc.

idéalement, ( c est peut etre beaucoup demandé) ce serait bien de rajouter une cellule à coté de la date en marquant oui ( du style oui je m occupe de la révision) et des quil ya ce oui, j ai plus le message pour ce véhicule.

tu vois l idée ?

merci steph
 

kllmoon

XLDnaute Occasionnel
Re : message d'alerte en fonction d'une date

théoriquement, si ton info est en rouge c'est que tu as été prévenu. Donc, réorganise le code pour que Cell.Interior.ColorIndex = 3 soit après MsgBox " Le véhicule ....

Finalement, ajoute une condition après If CLng(Cell.Offset(0, 1)) - 60 < CLng(Date) Then indiquant que si Cell.Interior.ColorIndex = 3 on exit sub. Sinon, on poursuit le code normalement.

De cette façon, tes cellules déjà en rouge ne produiront pas d'avertissements tandis que tes cellules nouvellement rouges elles en produiront un.

Code:
Private Sub Workbook_Open()
    Sub color()
Dim Cell As Range
    For Each Cell In Sheets("Feuil1").Range("A2" & ":A" & Range("A65536").End(xlUp).Row)
    If CLng(Cell.Offset(0, 1)) - 60 < CLng(Date) Then
    If Cell.Interior.ColorIndex = 3 Then
      GoTo 1
      Else
    Cell.Offset(0, 1).Interior.ColorIndex = 3 ' Si tu veux aussi la cellule avec la date en rouge
    MsgBox " Le véhicule : " & Cell & " devra passer en révision le : " & CDate(Cell.Offset(0, 1))
    Cell.Interior.ColorIndex = 3
    Cell.Offset(0, 1).Interior.ColorIndex = 3 ' Si tu veux aussi la cellule avec la date en rouge
    If CLng(Cell.Offset(0, 1)) - 60 > CLng(Date) Then
    Cell.Interior.ColorIndex = xlNone
    Cell.Offset(0, 1).Interior.ColorIndex = xlNone ' Et ça
    Exit Sub
    End If
    End If
    End If
1:    Next
End Sub

Finalement j'ai testé, ceci semble bien fonctionner.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 425
Membres
102 886
dernier inscrit
eurlece