IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

filtres macro debutant


Sujet :

Access

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut filtres macro debutant
    Bonjour à tous !!!

    J'aimerais savoir si l'on peut avec un filtre "date" qui trie les données de façon à ce que j'obtienne des infos durant la semaine en cours par l'intermédiaire d'une macro raccordée à un bouton de formulaire de façon automatique (c'est-à-dire que la date s'incremente seule), et que chaque semaine, je clique sur ce bouton pour qu'il me sorte les résultats de la semaine en cours sur une feuille excel ? Est-ce possible?
    Si je me suis mal exprimé, n'hésitez pas à me poser des questions.
    Merci d'avance pour vos réponses.

  2. #2
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Re c'est encore moi!

    Je viens de trouver comment récuperer des enregistrements contenus entre deux dates grâce à Between #date1# And #date2#.
    J'arrive, comme je le souhaité, à l'envoyer vers une feuille excel.

    Mais là où je n'arrive plus à avancer, c'est lorsque je veux que les dates que je rentre à la main (qui correspondent à une semaine) s'incrémentent désormais seules ce qui éviterait aux personnels de changer chaque semaine les dates date1 et date2. Dans la mesure du possible bien évidemment.

    Voici mon code SQL de ma requete:
    SELECT [Copy of T_Demandeurs2].InputDate
    FROM [Copy of T_Demandeurs2]
    WHERE ((([Copy of T_Demandeurs2].InputDate) Between #1/1/2006# And #1/7/2006#));
    Si ce que je souhaite est faisable, où devrais-je mettre le nouveau code?

    Merci d'avance pour vos réponses.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Bravo !
    Citation Envoyé par pascal913
    Je viens de trouver comment récuperer des enregistrements contenus entre deux dates grâce à Between #date1# And #date2#.

    J'arrive, comme je le souhaité, à l'envoyer vers une feuille excel.
    Expression VBA qui retourne la date du 1er jour de la semaine en cours (le lundi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date - Weekday(Date, vbMonday) + 1
    Expression VBA qui retourne la date du dernier jour de la semaine en cours (le dimanche):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date - Weekday(Date, vbMonday)  + 7
    Cerise sur la requête...
    Le tout dans ta requête SQL (sachant que vbMonday est une constante qui vaut 2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Copy of T_Demandeurs2].InputDate
    FROM [Copy of T_Demandeurs2]
    WHERE [Copy of T_Demandeurs2].InputDate 
    Between (Date - Weekday(Date, 2) + 1) And (Date - Weekday(Date, 2) + 7)

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Salut =JBO= mais pourrait tu me préciser où je dois placer ton code dans le mien??

    merci d'avance

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Remplace simplement ta requête par la sienne.

    En oubliant pas que l'expression : Date - Weekday(Date, 2) + 1 doit se trouver entre double guillemet, ce qui te donne :

    #" & Date - Weekday(Date, 2) + 1 & "#

    le symbole & permet d'ajouter ton code (le résultat en fait) dans ta requête.

    les # sont obligatoire du fait que ton paramètre est une date.

    ca te fait la requete :


    SELECT [Copy of T_Demandeurs2].InputDate
    FROM [Copy of T_Demandeurs2]
    WHERE [Copy of T_Demandeurs2].InputDate
    Between (#" & Date - Weekday(Date, 2) + 1 & "#) And (#" & Date - Weekday(Date, 2) + 7 & "#)
    maintenant, je suppose que tu sais lancer une requete sql depuis ton code VBA

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Ici, il n'est pas utile de pas modifier la requête que j'ai donnée.

    Ce code SQL peut être utilisé tel quel, et les expressions de date sont correctement évaluées, directement par le moteur de bases de données (qui en réalité, délègue cette tâche à VBA ).

    Citation Envoyé par en_gel_ho
    En oubliant pas que l'expression : Date - Weekday(Date, 2) + 1 doit se trouver entre double guillemet, ce qui te donne ...

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Bonjour tout le monde !! ! ! ! !!!

    Je remercie tout particulièrement en gel ho et =JBO= qui m'ont mis bien plus que sur la voie, et je leur en suis très reconnaissant.

    Je viens tout juste de voir vos messages, donnez moi quelques minutes et je vous dirais ce qu'il en est.

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Re.
    Je viens de tester vos codes SQL mais quand je la "lance" Enter parameter Value apparait, Date :
    Est-ce normal? Si oui j'ai essayé de rentrer des dates sous différentes formes, mais sans succès.

    Merci d'avance

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Désolé tu as raison.
    Citation Envoyé par pascal913
    Je viens de tester vos codes SQL mais quand je la "lance" Enter parameter Value apparait, Date :
    Est-ce normal?
    C'est normal, vu que je t'ai proposé un code avec des erreurs .

    En fait ici Date() est une fonction sans argument qui retourne la date du jour.
    Dans une requête SQL, la syntaxe correcte d'un appel de fonction doit faire figurer les parenthèses qui entourent les arguments.
    Et s'il n'y a pas d'argument ? On doit quand même donner les parenthèses, sinon ce serait interprété comme un nom de champ ou un comme un nom de paramètre (comme l'erreur que ta as obtenu).

    Donc la syntaxe SQL correcte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Copy of T_Demandeurs2].InputDate
    FROM [Copy of T_Demandeurs2]
    WHERE [Copy of T_Demandeurs2].InputDate 
    Between (Date() - Weekday(Date(), 2) + 1) And (Date() - Weekday(Date(), 2) + 7)

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Tout d'abord merci =JBO= de m'avoir répondu. Mais le code SQL que tu m'as donné (qui fonctionne) ne m'a malheureusement pas fait avancer puisque j'en suis toujours au même point.
    Ensuite je suis désolé de t'ennuyer avec mes questions, je te rappelle que je n'utilise Access 97 que depuis moins de 1 mois et que je ne comprend rien en programmation, ce n'été pas la peine de te foutre de ma gueule.

    Mais c'est pas grave, peut être que tu n'été pas au courant, je t'excuse.

    Je reviens à mon problème de SQL.
    Ce que j'ai fonctionne très bien mais il faudrait quelque chose qui puisse me permettre d'obtenir en plus de ce que j'obtiens déjà (c'est-à-dire toutes les analyses de la semaine en cours qui sont terminées), toutes les analyses qui ne sont pas terminées, c'est-à-dire qu'elles sont soit pas commencées soit en cours d'analyse. Est-ce possible?

    Merci d'avance pour vos réponses.

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par pascal913
    ... je te rappelle que je n'utilise Access 97 que depuis moins de 1 mois et que je ne comprend rien en programmation, ce n'été pas la peine de te foutre de ma gueule.

    Mais c'est pas grave, peut être que tu n'été pas au courant, je t'excuse.
    Je ne vois vraiment pas de quoi tu parles . Tu pourrais m'expliquer...

    Citation Envoyé par pascal913
    Je reviens à mon problème de SQL.
    Ce que j'ai fonctionne très bien mais il faudrait quelque chose qui puisse me permettre d'obtenir en plus de ce que j'obtiens déjà (c'est-à-dire toutes les analyses de la semaine en cours qui sont terminées), toutes les analyses qui ne sont pas terminées, c'est-à-dire qu'elles sont soit pas commencées soit en cours d'analyse. Est-ce possible?
    C'est possible bien sûr.

    Mais tu veux le faire à partir de la même requête ou avec une requête distincte ?

    Par ailleurs, quels sont les critères (quels champs, de quelles tables, avec quelles valeurs ou absences de valeur, c-à-d Null) pour déterminer qu'une analyse est en cours ?

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Je suis désolé, j'ai cru que tu faisais exprès, mais ce n'est pas à refaire........
    Bon c'est pas grave, c'est tout oublié.

    Mais tu veux le faire à partir de la même requête ou avec une requête distincte ?

    Peu importe (du moment que ça marche......)

    Par ailleurs, quels sont les critères (quels champs, de quelles tables, avec quelles valeurs ou absences de valeur, c-à-d Null) pour déterminer qu'une analyse est en cours ?

    Tout mes champs (15 environ) sont dans une seule et unique table. Il y a 4 champs :
    * InputDate : date de la demande d'analyse par un client (tout les enregistements en sont pourvus).
    * StartDate : date du début de l'analyse par un technicien (pas tous les enregistrements en sont pourvus, le technicien ne peut pas commencer tout de suite)
    * OutputDate : date de la fin de l'analyse par le technicien.
    * Status : (combo box avec 4 choix) représente l'avancement de l'analyse par un technicien :
    - In progress : "en cours d'analyse" donc on a une date dans InputDate et StartDate.
    - Finished : "fin" donc InputDate, StartDate et OutputDate sont remplis.
    - Cancelled : "annulé" ; pas important ici.
    - Stand-by : idem.
    - ou un espace vide, donc on a que InputDate.

    Voilà j'espère que me suis bien expliqué, sinon posez moi des questions pour d'éventuelles précisions.

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Ton besoin...
    Citation Envoyé par pascal913
    [...] toutes les analyses qui ne sont pas terminées, c'est-à-dire qu'elles sont soit pas commencées, soit en cours d'analyse. Est-ce possible?
    Merci pour les infos sur les champs de ta table.
    Il me semble qu'on peut se focaliser sur le seul champ OutputDate.
    En effet, ici l'absence d'une date indique qu'il s'agit une analyse pas terminée, voire même pas commencée.

    Si tu es d'accord, alors concrêtement, tu pourrais utiliser le critère suivant dans la clause WHERE de la requête qui liste les analyses pas terminées OU pas commencées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE OutputDate IS NULL

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    =JBO= Avec ton aide, voici ma requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Copy of T_Demandeurs2].OutputDate
    FROM [Copy of T_Demandeurs2]
    WHERE ((([Copy of T_Demandeurs2].OutputDate) Is Null;
    Ici j'obtiens tous les enregistrements qui n'ont pas de OutputDate.

    Donc ça ne marche pas.

    Ce qui m'interresse, c'est d'avoir toutes les analyses (de ma bdd et non de la semaine) qui ne sont pas terminées (donc pas de OutputDate), plus les analyses de la semaine en cours (date que je change moi-même) qui sont terminées.
    tout ça sur une même feuille excel.

  15. #15
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Excuse moi, mais je suis entrain de décrocher...
    Citation Envoyé par pascal913
    Ce qui m'interresse, c'est d'avoir toutes les analyses (de ma bdd et non de la semaine) qui ne sont pas terminées (donc pas de OutputDate), plus les analyses de la semaine en cours (date que je change moi-même) qui sont terminées.
    Si j'ai bien compris, tu veux:
    (1) toutes les analyses terminées durant la semaine en cours,
    (2) toutes les analyses commencées et pas terminées,
    (3) toutes les analyses pas commencées.

    Pour la semaine en cours tu veux fonctionner comme pour l'InputDate (cf. les posts au-début de ce thread) ?
    Si oui, ça donnerait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT [Copy of T_Demandeurs2].OutputDate
    FROM [Copy of T_Demandeurs2]
    WHERE ([Copy of T_Demandeurs2].OutputDate Is Null) 
    OR ([Copy of T_Demandeurs2].OutputDate 
    Between (Date() - Weekday(Date(),2) + 1) And (Date() - Weekday(Date(),2) + 7))

  16. #16
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    =JBO=

    Avec le code que tu m'as donné, j'obtiens tous les enregistrements qui sont ni commencées et ni terminées, ça c'est bon, mais tous ces enregistrements sont ceux qui n'ont pas de OutputDate, et la c'est moins bon........ et en plus la semaine n'est pas pris en compte pour le OutputDate (forcément vu qu'ils sont tous vides).

    Donc ça n'a pas marché.

    Si quelqu'un à une solution dans ce problème qui m'a l'air de ne pas en avoir.
    Je lui en serai très reconnaissant.
    Merci

  17. #17
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par pascal913
    Avec le code que tu m'as donné, j'obtiens tous les enregistrements qui sont ni commencées et ni terminées, ça c'est bon, mais tous ces enregistrements sont ceux qui n'ont pas de OutputDate, et la c'est moins bon........ et en plus la semaine n'est pas pris en compte pour le OutputDate (forcément vu qu'ils sont tous vides).

    Donc ça n'a pas marché.
    Franchement, j'ai l'impression que le problème est ailleurs...
    Peut-être que la table [Copy...] ne contient pas tous les enregistrements ?

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    non il y a exactement le meme nombre d'enregistrement dans les 2 tables. Je dis 2 tables parce que Copy of T_Demandeurs2 est la copie de T_Demandeurs2, je n'ai pas le temps d'expliquer pourquoi c'est une copie, de toute facon c'est pas imporatant.

    Le problème ne vient pas de là, j'en suis certain à 99,9%.

    Je commence sérieusement à désespérer........ et à m'énerver que ça ne marche pas.

    Mais bon j'espère que quelqu'un verra nos messages et qu'il trouvera une solution qui me parait presque inexistante.

    Merci de votre aide.

  19. #19
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par pascal913
    Le problème ne vient pas de là, j'en suis certain à 99,9%.

    Je commence sérieusement à désespérer........ et à m'énerver que ça ne marche pas.
    A ce stade, il serait judicieux que tu mettes à notre disposition un fichier MDB avec juste la table [Copy of T_Demandeurs2 ].
    Tu peux l'attacher à un post dans ce forum.

    Ainsi, on sera plus efficace pour t'aider...

  20. #20
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut précisions
    Re bonjour à tous.

    Vu que je n'arrive pas à intégrer des pièces jointes (.xls et .mdb), je n'ai d'autre solution que de vous demandez à Meduse de quoi sont composés ces deux fichiers (désolé) parce que je les lui ai envoyé par MSN.

    Si vous arriver à mettre la main dessus par l'intermédiaire de Meduse ou que quelqu'un m'explique comment intégrer des pièces jointes, voici quelques précisions sur ces fichiers:

    Etant donné la confidentialité de mon travail, j'ai été obligé, vous vous en doutes bien, d'effacer quelques champs qui de toute façon ne sont pas utiles pour résoudre le problème. Les macros et les requêtes ne représentent pas grand chose vu qu'elles sont basée sur l'ancienne table (Copy of T_Demandeurs) qui pour moi sera la table définitive. J’ai également mis des noms bidons pour les demandeurs.

    Le fichier Excel que je dois obtenir contient moins de champs que la feuille prévue (confidentialité). Je n’ai pas rempli les champs Délai analyse et Temps analyse car pas très utile et un peu long. N’ayez pas peur, ce tableau n’est pas le résultat d’une macro, ce travail été fait à la main et c’est pour cela que viens automatiser leur système.

    Voilà, vous en savez presque autant que moi, si vous pensez qu’il vous manque des éléments, envoyez moi un message sur le forum habituel ou en message privé.

    Bonne chance

Discussions similaires

  1. [PR-2010] Project Filtre Macro ou Fonction?
    Par 2rdev dans le forum Project
    Réponses: 3
    Dernier message: 16/01/2014, 18h13
  2. Filtres macros (paramètres multiples)
    Par MeiHua dans le forum Cognos
    Réponses: 0
    Dernier message: 10/04/2013, 16h11
  3. [VBA] [XI3]Suppression d'un filtre (macro)
    Par delphine35 dans le forum SDK
    Réponses: 1
    Dernier message: 22/11/2010, 14h13
  4. Réponses: 21
    Dernier message: 10/05/2006, 14h25
  5. [VBA-E]Filtre via une macro sur Excel
    Par jamal.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo