Comment activer macro à une date indiqué dans une cellule

M

muriel

Guest
Bonjour à tous,

je voudrais savoir quel est le code vba pour activer une macro à la date qui est inscrit dans une cellule.
exemple:
dans la cellule A5 j'ai une date de relance qui est pour le 28/01/2003 et je voudrais qu'à cette date une macro s'active pour me dire que la date de relance est expiré, en sachant que la date dans la cellule A5 est differente pour chaque dossier.

d'avance merci pour vos reponse,

muriel.
 
V

Valérie

Guest
Slt muriel et les forumeurs(euses)

Qu'appelles-tu dossier? est-ce une feuille ou un classeur ou simplement une ligne car en fonction des cas le code sera différent.

Si toute fois c'est un classeur tu dois placer ta macro à l'ouverture du classeur soit
ThisWorkbook ==> Open

Si c'est une feuille tu la placeras dans TaFeuille ==> Activate
Mais tu as intérêt à changer la valeur de A5 dans ta macro sinon à chaque activation de la feuille la macro se lancera!!

ensuite avec un si tu testes

If range("A5") = Date then
Tamacro
Range("A5") = "Date de prochaine relance"
End If

@+
 
M

muriel

Guest
salut valerie,

tout d'abord merci pour ta réponse, mais je crois que j'ai mal formulé ma question c'est bien un classeur, mais je veux pas vraiment activer une macro je veux qu'un message à l'ouverture apparaisse quand la date dans la cellule A5 est dépassé.

et encore merci pour ton aide,

muriel
 
V

Valérie

Guest
Tu veux qu'il s'affiche à l'ouverture? dans ce cas voici le code
Dans
ThisWorkbook ==> Open

cela te donne

Private Sub Workbook_Open()
If IsDate(Range("A5")) And Range("A5") < Date Then MsgBox "La date est dépassée"
End Sub

Un premier test afin de confirmer que c'est bien une date ensuite qu'elle est bien >= à aujourd'hui et enfin ton message

Bon courage @+
 
M

muriel

Guest
re bonjour valerie,

je suis de retour avec mes questions !!!

la formule que tu m'as donné est super mais dans le meme classeur j'ai en A5 une date de relance et ta formule marche tres bien, mais le hic c'est que en A6 j'ai aussi une date de relance en A7 aussi etc, etc et là le probleme c'est que ce serais super qu'il me disent que la fiche 1 et la fiche 2 on depassé la date de relance, alors j'ai fait une colonne en b1 jusqu'à b5 pour avoir le numero de la fiche (fiche:1,2,3,4,5) mais comment avoir un message qui m'indique qu'elle sont les fiches qui ont depassé la date de relance, à la place du message precedent "La date est dépassée".

d'avance je te remercie beaucoup pour ton aide,

muriel
 
M

muriel

Guest
bonsoir Kris,

je l'ai déjà fait pour une autre valeur et là je prefererai un message à l'ouverture, le truc bien embetant qu'on a envie à force de regler pour plus qu'il s'affiche, hi,hi,hi....
mais evidemment, j'espere que ce que je demande n'est pas trop compliqué.

je te remercie Kris pour ton idée qui aurait pu etre excellente.

à bientot,

muriel
 
V

Valérie

Guest
Slt à tous et toutes,

Tu dois faire une boucle allant de 1 à n (dernier numéro de ligne de fiche que tu souhaites tester)
Ce qui te donnera toujours au même endroit :

Private Sub Workbook_Open()
Dim i as byte

For i = 5 to n

If IsDate(Range("A" & i)) And Range("A" & i) < Date Then
MsgBox "La date de la fiche " & Range("B" & i) & " est dépassée"
End If

Next i
End Sub

Comme cela tu auras autant de messages que de dates dépassées sinon

Private Sub Workbook_Open()
Dim i as byte, Message as String

For i = 5 to n

If IsDate(Range("A" & i)) And Range("A" & i) < Date Then
Message = Message & Range("B" & i) & " "
End If

Next i
MsgBox "La ou les fiches suivantes ont des dates dépassées " & VbCrlf & Message
End Sub

@+
Valérie
 
M

muriel

Guest
Salut Valerie et à tout les autres...

tu es une championne Valerie, et en plus j'ai le choix c'est pas 1 mais 2 codes que tu me proposes. C'est vraiment trop sympa de ta part, je te remercie pour ton aide qui me permet d'avancer.

Juste une petite chose sur la deuxieme solution si il n'y a pas de fiche à relancer le message ce met quand meme "La ou les fiches suivantes ont des dates dépassées ", avant de venir t'ennuyer ici j'ai essayé toute les solution mais j'ai pas trouvé comment faire pour qu'il ne se mette pas, bouhhhhh !!! je suis trop nul...

encore merci pour ton aide, Valerie.

@++

muriel.
 
V

Valérie

Guest
Salut Muriel

On va y'arrivait...
Pour le Msg tu dois tester la valeur de la variable Message de la façon suivante

If Message <> "" then '<> étant différent
MsgBox "bla bla bla"
End If

Comme cela en cas de non fiche pas de message

@+ et Bon courage
Valérie
 
M

muriel

Guest
Salut Valérie ainsi qu'a tout les autres,

me voilà de retour avec cette formule, sur laquelle ton aide m'a été précieuse, et je t'en remercie une nouvelle fois.

Voilà ma question, en supposant que à la place que ce soit sur une feuille qu'il me dise que la feuil1 ainsi que la feuil2 etc... est dépassé, je veuille qu'il le fasse sur un classeur par exemple dans la cellule k11 la date est dépassé il me mette le message qu'il y a dans la cellule A1 la date est dépassé dans la fiche 1, 2 j'ai cherché mais malheureusement je n'ai pas trouvé et avec l'exemple ci-dessous je n'arrive à ouvrir mon message au demarrage que sur une feuille (la fiche 1 est depassé et non sur le classeur la fiche1 2 est dépassé) avec ce code:

Private Sub Workbook_Open()

Ouvertureautomatique


If IsDate(Range("K" & 11)) And Range("K" & 11) < Date Then
Message = Message & Range("A" & 1) & " "
End If

If Message <> "" Then '<>
MsgBox "La ou les fiches suivantes ont des dates dépassées " & vbCrLf & Message
End If

End Sub

merci pour tout et à très bientot,

muriel
 

Discussions similaires

Réponses
2
Affichages
171

Statistiques des forums

Discussions
314 013
Messages
2 104 541
Membres
109 068
dernier inscrit
Amomone