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

IHM Discussion :

[Form][Filtre]Application Filtre.


Sujet :

IHM

  1. #1
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut [Form][Filtre]Application Filtre.
    Bonjour à tous,

    Je développe une petite appli simple qui consiste à importer des fichiers textes, j'ai un Form qui permet d'importer, d'afficher et de filtrer les données. Ce formulaire est en mode continu et je ne joue que sur le filtre du Form avec 3 critères. Pas de soucis sur l'importation, les filtres et affichage. j'ai mis un bouton qui permet d'ouvrir un état ou j'affiche toutes les données du Form selon filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "ethisto", acPreview, , , , Me.Filter
    je passe le filtre du Form dans l'OpenArgs, j'applique ensuite le filtre à l'état tout fonctionne sauf sur 1 cas lorsque je filtre le Form => Ok ensuite lorsque rien n'est sélectionné dans les zone de liste, je n'applique plus de filtre sur le Form, l'affichage sur le Form est ok mais si je veux afficher l'état celui-ci est resté sur l'ancien Filtre . Voici le code pour le filtre du Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        If strSelect <> "" Then
            strSelect = Left(strSelect, Len(strSelect) - 5)
            Me.Filter = strSelect
            Me.FilterOn = True
        Else
            Me.Filter = ""
            Me.FilterOn = False
        End If
    Pour que cela fonctionne je suis obliger d'appliquer deux fois le filtre sur le Form soit pas appuit deux fois sur le bouton 'valider' (bouton qui éxécute le filtre) soit par ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         If strSelect <> "" Then
            strSelect = Left(strSelect, Len(strSelect) - 5)
            Me.Filter = strSelect
            Me.FilterOn = True
        Else
            Me.Filter = ""
            Me.FilterOn = False
            Me.Filter = ""
            Me.FilterOn = False
        End If
    Je ne comprend pas le problème. Merci d'avance pour ceux qui pourront me renseigner

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Salut, Dolphy

    Déjà, je crois que je rempacerais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "ethisto", acPreview, , , , Me.Filter
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "ethisto", acPreview, ,Me.Filter
    pour que le filtre soit directement appliqué à l'état, dans l'argument WhereCondition qui est fait pour ça.
    Citation Envoyé par Dolphy35
    je passe le filtre du Form dans l'OpenArgs
    me paraît être une méthode trop compliquée.

    C'est tout ce que je vois. Le reste me paraît absurde (2 fois me.filter = "" ... ??), donc, pour l'instant, je patauge avec toi .

  3. #3
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut Papy Turbo,

    Tout d'abord merci pour ton temps consacré.

    j'ai tenté ta méthode c'est idem.

    Citation Envoyé par Papy Turbo
    C'est tout ce que je vois. Le reste me paraît absurde (2 fois me.filter = "" ... ??), donc, pour l'instant, je patauge avec toi .
    Pour les deux fois Me.Filter="" et bien c'est la seule solution que j'ai trouvé pour l'instant, si je n'applique pas deux fois le filtre et bien mon état reste sur l'ancien filtre. J'avoue je ne comprends rien.

  4. #4
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Je suis un peu perdu entre le filtre que tu appliques
    - au formulaire, je suppose avec du code dans le formulaire,
    - à l'état : tu as mentionné du code dans l'état, mais, avec ma méthode, il ne doit y avoir aucune ligne de code dans l'état. Il n'y a plus d'OpenArgs ni de Me.Filter dans l'état...

    De, plus, à tout hasard, avant le prochain test, vérifie que la propriété Filtre de l'état est bien vide, lorsqu'il est enregistré sur le disque (en mode Design).

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    lorsque tu désactives le filtre du formulaire, la propriété Me.Filter n'est pas vidée (bon là apparemment tu la vides par le code mais sinon elle n'est pas vidée)

    pour être sûr, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmd.OpenReport "ethisto", acPreview, ,IIF(Me.FilterOn,Me.Filter,"")

  6. #6
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonsoir,

    Merci à Papy Turbo et Arkham46 pour leur disponibilité et leurs conseils.

    En réponse à Papy Turbo :

    J'ai effectivement enlevé mon code dans l'état merci pour ton conseil car je me compliquais à vouloir passer avec l'OpenArgs. J'ai bien enregistrer (mode design) mon état sans filtre vide en argument et non appliqué, mais j'ai toujours mon phénomène que si je n'applique pas deux fois le Me.Filtre ="" et bien il n'est pas pris en compte dans l'état.

    En réponse à Arkham46 :

    J'ai esseyé ta solution et cela marche. Merci.


    Par contre pourquoi mon filtre ne se vide pas pourtant le code est bon je n'en vois pas d'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Filter = ""
    Me.FilterOn = False
    Si vous pouvez m'éclairer parce que là il y a de quoi être

    Merci

  7. #7
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par Dolphy35
    Si vous pouvez m'éclairer parce que là il y a de quoi être

    Merci
    Bienvenue chez les barges

    A tout hasard, colle nous l'ensemble de la routine concernée, qu'on jette un oeil (et le bon)... ?

  8. #8
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Merci Papy Turbo pour l'accueil de ce cercle très fermé !!

    Voici le code où je gère mon Filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    'Vide de la sélection si rien de sélectionné.
        If strSelect = "(" Then
            strSelect = ""
        End If
     
    'Si sélection application du Filtre avec critères chargés dans strSelect.
        If strSelect <> "" Then
            'Travail sur chaîne pour effacer le And en fin de chaîne.
            strSelect = Left(strSelect, Len(strSelect) - 5)
            Me.Filter = strSelect
            Me.FilterOn = True
        Else
            Me.Filter = ""
            Me.FilterOn = False
        End If
    Mon filtre est dans la variable strSelect je met mon filtre en fonction des sélection sur 2 zone de liste et une sélection par date, ceci fonctionne très bien. le contrôl si la variable ="(" permet de vider si aucune sélection.
    J'ai mis des points d'arrêts dans mon If sur le StrSelect et je passe bien dans le bon code, en plus le form lui se met bien à jour, mais lorsque je clique sur le bouton pour envoyer à l'état et bien nada l'état est resté avec l'ancien Filtre.
    Code pour ouverture état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "ethisto", acPreview, , IIf(Me.FilterOn, Me.Filter, "")
    Ce code fonctionne avec l'astuce d'Arkham mais cela me fais tout de même vider le filtre deux fois!!

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,

    et si tu mettais le code suivant à tout hasard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Me.Filter = ""
            Me.FilterOn = true

  10. #10
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Citation Envoyé par Alexandre Sahli
    bonjour,

    et si tu mettais le code suivant à tout hasard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Me.Filter = ""
            Me.FilterOn = true
    Salut Alexandre,

    J'avais déjà esseyé mais sans succès.

  11. #11
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Salut,

    J'avoue que j'ai bien envie de donner ma langue au chat !?!
    Je ne vois pas comment un état, auquel tu passes un string vide, peut s'ouvrir avec l'ancien filtre ?

    J'espère bien que, quand tu ouvres cet état,
    - il était bien fermé (pas resté ouvert derrière le formulaire ?)
    - il n'a pas été enregsitré avec un filtre dans sa priopriété Filtre. Voir propriétés de l'état en mode création.

  12. #12
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Citation Envoyé par Papy Turbo
    J'espère bien que, quand tu ouvres cet état,
    - il était bien fermé (pas resté ouvert derrière le formulaire ?)
    Oui il est bien fermé, l n'est pas en arrière plan.

    Citation Envoyé par Papy Turbo
    - il n'a pas été enregsitré avec un filtre dans sa priopriété Filtre. Voir propriétés de l'état en mode création.
    Oui lors de l'enregixtrement j'ai bien fait attention de ne pas enregistrer l'état avec un filtre.

    Là Papy Turbo je deviens voir même

    c'est tout de même

    Vive Access

  13. #13
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Salut, ça n'a jamais été résolu ?

    J'ai le même problème lorsque j'ouvre un formulaire à partir d'un autre formulaire en cliquant sur une zone de liste pour ouvrir l'enregistrement souhaité.

    Le form s'ouvre toujours avec un enregistrement en plus de celui que je choisis !?


  14. #14
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    je me prends toujours la tête là-dessus ! 5 ans après

    si mon état n'a pas strictement la même source que mon formulaire, je suis marron !

    Vous aviez avancé là dessus ?

    Jimbo, une idée ?

  15. #15
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Sylvain,

    Je n'ai jamais rencontré ce problème, ceci est t-il dû à une version d'Access en particulier. Je suis passé de 2000 à 2007 (comme les grands perchistes je fais des impasses à certaines hauteurs).

    De plus, j'utilise rarement les filtres mais plutôt les conditions where,voire la modification du recordSource à l'origine (le filtre est alors passé directement dans la requête).

    On peut regarder çà demain, sur le chat. Je vais essayer de trouver du temps car conf call demain avec les personnes du CIR.

    Bises

    Bonne soirée

    JM

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recup valeur tag après application filtre xpath
    Par flo73 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 05/10/2010, 18h51
  2. [Web/Reseaux] Application Filtre internet
    Par dz_robotix dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/03/2010, 16h17
  3. Application filtre sur un sous-formulaire
    Par nuFox dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/12/2008, 12h05
  4. application filtre puis extraction formulaire sous word
    Par kyser13 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/11/2008, 13h56
  5. Filtre applicable sur un ciel bleu ?
    Par byloute dans le forum Imagerie
    Réponses: 0
    Dernier message: 31/07/2007, 16h33

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