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

VBA Access Discussion :

Supprimer RÉELLEMENT le filtre d'un formulaire [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 102
    Points : 72
    Points
    72
    Par défaut Supprimer RÉELLEMENT le filtre d'un formulaire
    Bonjour à tous.

    Je cherche, par du VBA, à supprimer un filtre.
    Quand je dis supprimer, je veux dire que lorsqu'on regarde la feuille de propriétés du formulaire en mode création, la propriété "Filtre" est vide.
    Bref, je veux qu'il "oublie" totalement le dernier filtre utilisé, qu'il ne soit plus enregistré.

    J'ai essayé "Me.Filter = Null", il me met "Utilisation incorrecte de Null"
    J'ai essayé "Me.Filter = Empty", il conserve quand même en mémoire l'ancien filtre.
    J'ai essayé "Me.Filter = """, il conserve quand même en mémoire l'ancien filtre.
    Le tout, bien sûr, agrémenté d'un "Me.FilterOn = False" ou "True" qui ne change rien au problème.

    Quelqu'un a-t-il la solution ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Voici ce que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub SupprimerFiltre(prmFormulaire As Form)
        'Supprime le filtre
        prmFormulaire.Filter = ""
        prmFormulaire.FilterOn = False
    End Sub
    au moment de la fermeture.

    J'ai aussi désactivé le mode page du formulaire ce qui empêche l'utilisateur de modifier la structure du formulaire.

    Enfin, je soupçonne que tes filtres restent incrustés là parce qu'ils sont là en mode design.

    Voici le code que j'utilise pour changer les propriétés de mes formulaire en rafale.

    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
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub InterdireModePage()
        'Neutralise le "Mode page" de tous les formulaires
        ' Empêche l'utilisateur de faire des changements au formulaires en cours d'utilisation
     
        Dim f As Form
        Dim ao As AccessObject
     
        For Each ao In CurrentProject.AllForms
            Debug.Print ao.Name: DoEvents
            Call DoCmd.OpenForm(ao.Name, acDesign)
            Set f = Forms(ao.Name)
            f.AllowLayoutView = False
            Call DoCmd.Close(acForm, ao.Name, acSaveYes)
        Next ao
     
        Set ao = Nothing
        Set f = Nothing
     
        MsgBox "Fini !"
     
    End Sub
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 102
    Points : 72
    Points
    72
    Par défaut
    Merci de ces précisions.

    Le code prmFormulaire.Filter = "" ne semble pas supprimer vraiment le filtre. En effet, si on le lance puis qu'après on regarde le formulaire en mode création, il y a toujours le dernier filtre utilisé dans la propriété "Filtre". Alors que si on supprime à la main ce filtre dans la feuille de propriétés, il est vraiment effacé définitivement. C'est ça que je voudrais faire en VBA.

    Mais bon, j'ai réussi à contourner mon problème par un autre moyen, alors si vous trouvez une solution, ce sera seulement pour la gloire

    Je laisse ce fil quelques jours puis je le mettrai en résolu s'il n'y a pas de nouveauté.

    P.S. Je ne vois pas de différence dans mes formulaires entre le mode Page autorisé ou non. Ça change quoi ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bizarre.

    Le mode page permet à l'utilisateur de modifier la structure du formulaire sans passer par le mode design.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Vijinn Voir le message
    Bonjour à tous.

    Je cherche, par du VBA, à supprimer un filtre.
    Quand je dis supprimer, je veux dire que lorsqu'on regarde la feuille de propriétés du formulaire en mode création, la propriété "Filtre" est vide.
    Bref, je veux qu'il "oublie" totalement le dernier filtre utilisé, qu'il ne soit plus enregistré.

    J'ai essayé "Me.Filter = Null", il me met "Utilisation incorrecte de Null"
    J'ai essayé "Me.Filter = Empty", il conserve quand même en mémoire l'ancien filtre.
    J'ai essayé "Me.Filter = """, il conserve quand même en mémoire l'ancien filtre.
    Le tout, bien sûr, agrémenté d'un "Me.FilterOn = False" ou "True" qui ne change rien au problème.

    Quelqu'un a-t-il la solution ?
    Bonjour,
    Essayez dans cet ordre (et non l'inverse) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.FilterOn = False
    Me.Filter = ""
    Cordialement.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    Vous avez noté cette discussion comme "résolu". Je suis intéressée par votre solution, je suis dans la même problématique et j'arrive pas à m'en sortir.

    Merci pour votre aide


    Citation Envoyé par Vijinn Voir le message

    J'ai essayé "Me.Filter = Null", il me met "Utilisation incorrecte de Null"
    J'ai essayé "Me.Filter = Empty", il conserve quand même en mémoire l'ancien filtre.
    J'ai essayé "Me.Filter = """, il conserve quand même en mémoire l'ancien filtre.
    Le tout, bien sûr, agrémenté d'un "Me.FilterOn = False" ou "True" qui ne change rien au problème.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 115
    Points : 1 638
    Points
    1 638
    Par défaut
    Ce n'est pas résolu, c'est abandonné.

    Ce que veut l'OP: altération d'une propriété du formulaire à l'exécution qui reste visible en mode création, n'est réalisable qu'à condition de fermer le fourmulaire, l'ouvrir en mode création, altérer la ou les propriétés visées, le sauvegarder / fermer ce dernier, et le réouvrir en mode exécution.

    Ce n'est pas casse-gueule, c'est suicidaire.
    A ne pas faire.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    D'accord merci pour cette réponse.

    Donc aucun moyen de vider un champ sans fermer et rouvrir le formulaire ?

    Je ne parle pas en mode création. Mais j'ai un champ textbox de recherche et je n'arrive pas à le vider complètement.

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pas sur de ton problème mais tu peux peut-être essayer quelque chose comme :

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Merci pour votre aide, c'est vrai que mon explication n'est pas claire parce que tout était dit là.....

    'ai essayé "Me.Filter = Null", il me met "Utilisation incorrecte de Null"
    J'ai essayé "Me.Filter = Empty", il conserve quand même en mémoire l'ancien filtre.
    J'ai essayé "Me.Filter = """, il conserve quand même en mémoire l'ancien filtre.
    J'ai un champ TextBox de recherche, et quand je veux réinitialiser ce champ ma listBox attachée ne se met pas à jour, à moins de supprimer le texte.

    J'ai contourné le problème d'une façon peut-être pas très catholique mais j'obtiens le résultat que je souhaite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Me.mots_cles.SetFocus
    Me.mots_cles.SelStart = 0
    Me.mots_cles.SelLength = Len(mots_cles.Text)
    DoCmd.RunCommand acCmdDelete
    Je vous souhaite une bonne soirée

  11. #11
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Pour info la propriété .FilterOn n'a rien à voir avec la problématique.
    Dans le cas soulevé, il s'agit de libérer la sélection d'une listbox filtrée par une textbox. Les objets sont dans un form.
    La solution de micniv, que je salue, ici fait le job. Si vous saisissez des valeurs dans la textbox mots-cles,la listbox vous présente un résultat et si vous videz ladite textbox la listbox affiche toutes les valeurs !
    Sinon créer un btnCommande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande39_Click()
    Dim strRowSource As String
    Me.mots_cles = ""
    strRowSource = "Select [produit_ref],[produit_nom] from Produits"
    Liste1.RowSource = strRowSource
    End Sub
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par planetesud Voir le message
    Bonjour,
    Vous avez noté cette discussion comme "résolu". Je suis intéressée par votre solution, je suis dans la même problématique et j'arrive pas à m'en sortir.

    Merci pour votre aide
    Bonjour,
    J'ai donné ma solution dans mon message, j'ai mis dans mon code les 2 lignes suivantes (les mettre dans cet ordre) :

    Me.FilterOn = False
    Me.Filter = ""

    Cordialement.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Salut
    Pour info la propriété .FilterOn n'a rien à voir avec la problématique.
    Dans le cas soulevé, il s'agit de libérer la sélection d'une listbox filtrée par une textbox. Les objets sont dans un form.
    La solution de micniv, que je salue, ici fait le job. Si vous saisissez des valeurs dans la textbox mots-cles,la listbox vous présente un résultat et si vous videz ladite textbox la listbox affiche toutes les valeurs !
    Sinon créer un btnCommande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande39_Click()
    Dim strRowSource As String
    Me.mots_cles = ""
    strRowSource = "Select [produit_ref],[produit_nom] from Produits"
    Liste1.RowSource = strRowSource
    End Sub
    Bonjour et merci beaucoup. C’est le bouton que je voulais c’est super... merci encore à micniv
    Bonne journée

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

Discussions similaires

  1. Lier une zone de liste au filtre d'un formulaire
    Par antier dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 20h13
  2. Problème de filtre sur un formulaire
    Par bernardmichel dans le forum IHM
    Réponses: 6
    Dernier message: 12/12/2005, 15h36
  3. filtre dans un formulaire
    Par deuss33 dans le forum IHM
    Réponses: 3
    Dernier message: 01/12/2005, 10h09
  4. [vb][filtre dans un formulaire ]
    Par raymondhoffmeyer dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 11h21
  5. Réponses: 4
    Dernier message: 14/10/2005, 09h54

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