Limite de temps sous access

Fermé
Patrick06 - 27 mai 2008 à 10:37
Patrickdu06 Messages postés 1 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 5 juin 2008 - 5 juin 2008 à 16:33
Bonjour,
voilà mon problème : Je dois créer un évènement dans access qui me permette d'obtenir un changement (ex : un bouton qui prend la couleur rouge) en fonction d'une limite de temps. Ma base de donnée correspond à une liste de véhicules qui doivent être mis à la vente six mois après être entrés "en magasin" si je puis dire.
Donc sur un formulaire j'ai un bouton qui correspond à chaque véhicule, ce bouton (click) ouvre la table correspondante avec les détails du véhicule.
Ce qu'il me faudrait c'est qu'en visualisant ce formulaire, je sache quels sont les véhicules qui sont "en magasin" depuis six mois. L'idéal serait d'avoir un effet sur le bouton, comme un changement de couleur, ou autre chose du moment que celà "saute aux yeux".
Je suppose qu'il faut passer par une formule, mais je ne connais rien en vba, pouvez-vous me donner un petit coup de main ?
Merci à tous par avance.

11 réponses

Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
27 mai 2008 à 11:33
Private Sub Texte1_GotFocus()
Commande0.ForeColor = 0
If Texte1.text <> Null Then
If date - CDate(Texte1.text) > 180 Then
Commande0.ForeColor = 255
End If
End If
End Sub

le code s'execute quand l'etiquete "texte1" recoit le focus.
il y a comparaison entre la dte inscrite dans texte1 et aujourd hui et si >180 alors la police du bouton "commande0" devient rouge.
0
Merci de ta réponse "Frappe Misere",
Comme je l'ai dis je n'y comprends pas grand chose en vba, alors si j'ai saisi ce que tu as dis le "focus" devrait être la date inscrite entre parenthèse dans la première ligne ?
Le reste est clair, donc ok, mais y-a t-il une façon particulière d'inscrire les dates dans cette programmation ?
Pourrais-tu me donner un exemple avec n'importe quelle date stp ?
Merci.
0
Utilise la fonction autoformat de ton formulaire en mode design... sous le menu Format!
0
Oups sorry C'est le formatage conditionnel qu'il faut utiliser!
0
Patrick06 > bnb
27 mai 2008 à 16:04
DSL, mais là j'ai rien compris du tout, pour info j'ai access 2007, il y a peut-être des différences ?
Je suis au point mort car quelle commande prendre pour rentrer le code donné par Frape Misère ?
La syntaxe pour les dates ?
Help !
Merci.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
27 mai 2008 à 16:14
le focus c'est le fait de recevoir le curseur, le moment ou tu peux saisir dedans.
Private Sub Texte1_GotFocus()
Commande0.ForeColor = 0
If Texte1.text <> Null Then
If date - CDate(Texte1.text) > 180 Then
Commande0.ForeColor = 255
End If
End If
End Sub

à la ligne : if date (là il prends la date du jour de ta machine) - cdate(texte1.text) (là c'est ce qu il y a d'inscrit dans ta textbox)
0
Merci de ta patience,
donc dans la formule je n'ai qu'a inscrire entre les parenthèses après Cdate la date d'entrée du produit ?
Il n'y a rien à mettre entre les parenthèses qui suivent Private Sub Texte1_GotFocus ?
La textbox ce trouve où alors ?
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
27 mai 2008 à 16:52
tu n'as bien compris je crois.
c'est une fonction à écrire en VBA.
tu vas sur ton formulaire, tu le mets en mode création puis un clic droit sur ta texbox et "créer code evenement"
0
Non ca j'avais compris, ce que je n'ai pas compris c'est où, il faut que je précise la date d'entrée de mon produit, j'utilise un bouton donc dans access c'est la commande235 et la formule étant :

Private Sub Texte1_GotFocus()
Commande0.ForeColor = 0
If Texte1.text <> Null Then
If date - CDate(Texte1.text) > 180 Then
Commande0.ForeColor = 255
End If
End If
End Sub

...................................................................


Private Sub Texte1_GotFocus() ...........Faut-il mettre quelque chose ici entre les parenthèses ?Commande0.ForeColor = 0.................Je suppose que là je remplace par le nom de ma commande
If Texte1.text <> Null Then....................Dois-je mettre une datre entre les signes <> ?
If date - CDate(Texte1.text) > 180 Then...........Entre les parenthèses dois-je mettre la date d'entrée du produit ?
Commande0.ForeColor = 255............Et ici je remplace encore par le nom de ma commande ?
End If
End If
End Sub

Désolé de te faire perdre ton temps, mais un exemple avec une date quelconque m'aurait bien aidé, merci encore de ta patience, je le redis, c'est la première fois que j'aborde le VBA, sois "clément".....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
28 mai 2008 à 13:46
je suis clément, seulement je suis bref ce qui parfois laisse croire le contraire.
il n'y a pas de date dans le code puisque la date est "lue" dans ton champs texte qui l'affiche.

Private Sub Texte1_GotFocus() ...........Faut-il mettre quelque chose ici entre les parenthèses ? non
Commande0.ForeColor = 0.................Je suppose que là je remplace par le nom de ma commande par le nom de ton bouton, oui
If Texte1.text <> Null Then....................Dois-je mettre une datre entre les signes <> ? tu dois juste changer le "texte1" par le nom du champs texte qui affiche la date
If date - CDate(Texte1.text) > 180 Then...........Entre les parenthèses dois-je mettre la date d'entrée du produit ? non, idem que au dessus
Commande0.ForeColor = 255............Et ici je remplace encore par le nom de ma commande ? exact
End If
End If
End Sub

courage, tu vas y arriver.
0
Bonjour,
tout d'abord merci à toi, car effectivement tu es patient !
Bon cette fois ci, ci je n'y arrive pas, il vaut mieu laisser tomber car tes explications ne peuvent être plus claires !
Merci encore, je signalerais le sujet, dés mon résultat, comme résolu.
À bientôt.
Patrick.
0
Bon et bien rien à faire !!!! J'ai pourtant un champs texte dans ma table et la première ligne porte la date, ce champs est nommé ChampsD (pour date), lorsque je génère le code sur la base donnée, celle-ci :

Private Sub Texte1_GotFocus()
Commande0.ForeColor = 0
If Texte1.text <> Null Then
If date - CDate(Texte1.text) > 180 Then
Commande0.ForeColor = 255
End If
End If
End Sub

Le prog remplace d'office Texte1 par Bouton01 (le nom de mon bouton) et lorsque je lance "l'effet" une erreur ce produit "objet manquant" et le débogueur stoppe sur la ligne en gras.


Private Sub Bouton01_GotFocus()
Bouton01.ForeColor = 0
If ChampsD.Text <> Null Then
If Date - CDate(ChampsD.Text) > 180 Then
Bouton01.ForeColor = 255
End If
End If
End Sub

Te resterais t-il un brin d'espoir que je comprenne Frappe Misere ????
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
29 mai 2008 à 00:02
tu peux faire un screen de ton formulaire et me l envoyer ?
je pourrais mieux t expliquer en connaissant un peu ton formulaire
0
Slt Frappe Misère,
je n'étais pas devant ma bécane depuis deux jours, voilà pourquoi je tardais à répondre !
Je pourrais effectivement faire des screens, mais le "travail" que je tente d'effectuer (c'est pas gagné) fait partie d'un ensemble confidentiel qui ne m'appartient pas, donc derière moi il se trouve des "opposants" si je puis dire.
Ce qu'il faudrait c'est que je recrée un formulaire type sans présentation, mais franchement je ne sais pas si celà t'aiderais beaucoup.
Finalement il ne s'agit que de boutons dont une fonction (click) permet d'appeller une table qui contient des renseignements (le bouton porte un numéro d'ordre qui correspond à la table)
La deuxième fonction que je n'arrive pas à réaliser malgrés tes efforts, tu la connais, faire en sorte que ce bouton change de couleur (ou même ce qui est écrit dedans) dés lors que la date d'entrée du produit (noté dans le ChampsD de la table correspondante) est supérieur à six mois par rapport à la date du jour.
Ce ChampsD ne semble pas être "accepté" et la ligne correspondante de la formule donnée :

If ChampsD.Text <> Null Then

Est celle surlignée en jaune par le débogueur (erreur d'execution "424" __ Objet requis)

J'ai modifié le nom, changé de type de date, mais rien ne fonctionne quoi que je fasse j'ai toujours le même message d'erreur. Pour info je passe par les propriétés du bouton, pour executer la tache et j'enregistre à chaque fois les modifs, mais encore et toujours l'erreur demeure.

La formule est pourtant inscrite comme suit :

Private Sub Bouton01_GotFocus()
Bouton01.ForeColor = 0
If ChampsD.Text <> Null Then
If Date - CDate(ChampsD.Text) > 180 Then
Bouton01.ForeColor = 255
End If
End If
End Sub

Si tu as encore 5mn.......Merci.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
2 juin 2008 à 10:05
Private Sub ChampsD_GotFocus()
Bouton01.ForeColor = 0
If ChampsD.Text <> Null Then
If Date - CDate(ChampsD.Text) > 180 Then
Bouton01.ForeColor = 255
End If
End If
End Sub

en sachant que ChampsD doit etre une "zone de texte", dis moi si c'est autre chose.
tu peux aussi mettre un point d'arret devant cette ligne pour voir ce que contient excatement ChampsD au moment ou le programme s arrete.
0
Merci à toi,
je pars au boulot, donc pas le temps aujourd'hui, je verrais ca ce soir et te tiendrais au courant.
Merci et à ce soir donc.
Patrick.
0
Bonsoir Frappe Misère,
bon j'ai effectué l'essai, mais celà ne donne rien si je respecte tes données :


Private Sub ChampsD_GotFocus()
Bouton01.ForeColor = 0
If ChampsD.Text <> Null Then
If Date - CDate(ChampsD.Text) > 180 Then
Bouton01.ForeColor = 255
End If
End If
End Sub

Le VBA passe "en mode général" et le code n'est plus attribué à mon bouton01, donc je passe de nouveau par format GotFocus, le VBA affiche automatiquement le nom du Bouton, je colle le code (pour la 1000000eme fois !), et toujours erreur, finalement une info bulle me prospose de changer le "Text" par "Value", ce que je fais, là plus d'erreur, ce qui donne :

Private Sub Bouton01_GotFocus()
Bouton01.ForeColor = 0
If ChampsD.Value <> Null Then
If Date - CDate(ChampsD.Value) > 180 Then
Bouton01.ForeColor = 255
End If
End If
End Sub


Mais mon bouton ne passe pas plus au rouge qu'avant !!! Pourtant mon ChampsD sur ma table porte bien la date de 01/11/2007 ce qui fait donc + de six moi à ce jour et je respecte donc :

If Date - CDate(ChampsD.Text) > 180 Then

Faut-il que ce ChampsD soit reporté sur mon formulaire pour que celà fonctionne ? Pour changer je suis paumé !
Merci d'avance pour continuer de te pencher sur mon problème.
Patrick.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
4 juin 2008 à 13:15
j'ai comme l'impression que tu en as oublié un bout en chemin.
envoie moi ton mail par mp, je te fais une base avec une table, un formulaire et la fonction pour te montrer.
0
Ok, merci je fais ca immédiatement !
0
Patrickdu06 Messages postés 1 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 5 juin 2008
5 juin 2008 à 16:33
MP envoyé hier au soir..............À suivre.
0