Limite de temps sous access

Patrick06 -  
Patrickdu06 Messages postés 1 Statut Membre -
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.
Configuration: Windows XP
Internet Explorer 6.0

11 réponses

  1. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      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
  2. bnb
     
    Utilise la fonction autoformat de ton formulaire en mode design... sous le menu Format!
    0
    1. bnb
       
      Oups sorry C'est le formatage conditionnel qu'il faut utiliser!
      0
      1. Patrick06 > bnb
         
        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
  3. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      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
  4. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      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
  7. Patrick06
     
    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
  8. Frappe Misere Messages postés 2702 Statut Membre 568
     
    tu peux faire un screen de ton formulaire et me l envoyer ?
    je pourrais mieux t expliquer en connaissant un peu ton formulaire
    0
  9. Patrick06
     
    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
  10. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      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
  11. Patrick06
     
    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
  12. Frappe Misere Messages postés 2702 Statut Membre 568
     
    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
    1. Patrick06
       
      Ok, merci je fais ca immédiatement !
      0
    2. Patrickdu06 Messages postés 1 Statut Membre
       
      MP envoyé hier au soir..............À suivre.
      0