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 :

Filtrer dans formulaire avec plusieurs critères [AC-2003]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut Filtrer dans formulaire avec plusieurs critères
    Bonjour,

    J'ai un formulaire en mode continu que j'aimerais pouvoir filtrer suivant plusieurs critères (4 en l’occurrence).
    J'aimerais pouvoir filtrer soit avec 1 critère ou 2 ou 3 ou les 4 en même temps.

    j'ai un code qui fonctionne mais je n'arrive pas activer les différents filtres en même temps!!!

    En ce possible de le faire?

    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
    23
    24
    25
    Private Sub Commande21_Click()
    Dim strFilterClub As String
    Dim strFilterDist As String
    Dim strFilterDiscip As String
    Dim strFilterCat As String
     
     
        strFilterClub = "[club] = '" & Me.CmbClub & "' "
        strFilterDist = "[distance] = '" & Me.CmbDistance & "'"
        strFilterDiscip = "[Discipline] = '" & Me.CmbDiscipline & "'"
        strFilterCat = "[categorie] = '" & Me.CmbCategorie & "' "
     
     
        If Len(Me.CmbClub) = 0 Or IsNull(Me.CmbClub) Then strFilterClub = "[club] Is Null"
        If Len(Me.CmbDistance) = 0 Or IsNull(Me.CmbDistance) Then strFilterDist = "[distance] Is Null"
        If Len(Me.CmbDiscipline) = 0 Or IsNull(Me.CmbDiscipline) Then strFilterDiscip = "[discipline] Is Null"
        If Len(Me.CmbCategorie) = 0 Or IsNull(Me.CmbCategorie) Then strFilterCat = "[categorie] Is Null"
     
     
        DoCmd.ApplyFilter "", strFilterClub
        DoCmd.ApplyFilter "", strFilterDist
        DoCmd.ApplyFilter "", strFilterDiscip
        DoCmd.ApplyFilter "", strFilterCat
     
    End Sub

    Ce code ne filtre que sur la dernière commande applyfilter...
    Hors moi je veux pouvoir activer tous les filtrer en même temps !!!


    Merci de me dire si c'est possible

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour nounous54,

    Oui c'est possible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.ApplyFilter "", strFilterClub & " And " & strFilterDist ...
    Cependant avec ton code tu ne pourras jamais avoir:
    J'aimerais pouvoir filtrer soit avec 1 critère
    Puisque tu considères que si rien n'est saisie dans un cmb tu veux afficher les enregistrements = Null.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Me.CmbClub) = 0 Or IsNull(Me.CmbClub) Then strFilterClub = "[club] Is Null"
    Bonne journée

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut
    Bonjour robert1957,

    Merci ça fonctionne et effectivement tu as raison je ne peux pas faire 1 ou 2 ou 3 mais obligatoirement tous les critères renseigné....

    Du coup ça n'est pas forcement ce que j'ai besoin..

    Il faut que je puisse filtrer sur ce que je veux "club ou discipline ou les 2 ou que distance...."

    En fait si j'ai rien dans une combo il faut que le filtre fonctionne mais avec tout les enregistrements de la combo qui ne serait pas renseigné. !!!

    Je ne vois pas trop ..


    Une idée?

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour nounous54,
    Avec un filtre comme celui-ci:
    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
    Private Sub Commande21_Click()
        Dim strFilter As String
     
        'Concaténation du filtre selon ce qui a été saisie
        If Len(Me.CmbClub) <> 0 Or  Not IsNull(Me.CmbClub) Then strFilter = "[club] = '" & Me.CmbClub & "' AND "
        If Len(Me.CmbDistance) <> 0 Or Not IsNull(Me.CmbDistance) Then strFilter = strFilter  & "[distance] = '" & Me.CmbDistance & "' AND "
        If Len(Me.CmbDiscipline) <> 0 Or Not IsNull(Me.CmbDiscipline) Then strFilter = strFilter & "[Discipline] = '" & Me.CmbDiscipline & "' AND "
        If Len(Me.CmbCategorie) <> 0 Or Not IsNull(Me.CmbCategorie) Then strFilter = strFilter & "[categorie] = '" & Me.CmbCategorie & "' AND "
     
    'Si il y a eu saisie 
    If Len(strFilter) <> 0 Then
        'Suppression du dernier AND
        strFilter = Left(strFilter,Len(strFilter) - 5) 
        DoCmd.ApplyFilter "", strFilter
    End if
     
    End Sub
    Tu devras peut-être modifier le -5 pour -4. Je ne me souviens plus si le dernier espace est compté.

    Bonne journée

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut
    Bonjour robert1957

    Merci pour ce code.
    Ça fonctionne mais bizarrement.

    Alors en fait quand j'ouvre mon formulaire je force mes 4 combos à ="".
    J'ai également ajouté un FilterOn = False et du coup à l'ouverture tout mes enregistrements sont affichés et mes combos sont vides....

    Jusque là tout est bon..

    Ensuite par contre c'est là que c'est bizarre.
    Il faut que je renseigne toutes les combos pour que le code filtre fonctionne car sinon il ne m'affiche rien..
    Si je sélectionne par exemple que la combo discipline (pour avoir tous les enregistrements avec la même discipline mais peu importe les autres infos) et que j'active le filtre il n'affiche rien (aucun enregistrements) !!!

    Par contre une fois que j'ai renseigné toutes les combos et que j'active le filtre, là c'est bon ça fonctionne..
    Et le plus étrange c'est que après ça tout fonctionne normalement même si je ne sélectionne qu'un seul critère (alors que juste avant ça ne marchait pas !!!).

    Apparemment il faut qu'au moins une fois il y ai eut une sélection avec toutes les combos renseignés pour que le code fonctionne normalement ..

    Je ne comprends pas pourquoi ..

    J'ai fais plein de test et chaque fois c'est pareils..

    A tu une idée??

    Merci

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut
    C'est bon j'ai réussi à trouver la réponse par moi même...

    Parfois il faut faire une pause pour avoir les idées plus clair !!!

    à l'ouverture j'ai forcé à "Null" toutes mes combos.

    ensuite le code deviens
    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
    Dim strFilter As String
     
        'Concaténation du filtre selon ce qui a été saisie
        If Len(Me.CmbClub) <> 0 Or Not IsNull(Me.CmbClub) Then strFilter = "[club] = '" & Me.CmbClub & "' AND "
        If Len(Me.CmbDistance) <> 0 Or Not IsNull(Me.CmbDistance) Then strFilter = strFilter & "[distance] = '" & Me.CmbDistance & "' AND "
        If Len(Me.CmbDiscipline) <> 0 Or Not IsNull(Me.CmbDiscipline) Then strFilter = strFilter & "[Discipline] = '" & Me.CmbDiscipline & "' AND "
        If Len(Me.CmbCategorie) <> 0 Or Not IsNull(Me.CmbCategorie) Then strFilter = strFilter & "[categorie] = '" & Me.CmbCategorie & "' AND "
     
    'Si il y a eu saisie
    If IsNull(strFilter) = True Then      'si toutes les combos (critère filtre) sont vides alors pas de filtres
        FilterOn = False
    ElseIf Len(strFilter) <> 0 Then                          'sinon je filtre
        'Suppression du dernier AND
        strFilter = Left(strFilter, Len(strFilter) - 5)
        DoCmd.ApplyFilter "", strFilter
    End If
    Et la ça fonctionne !!!

    Merci robert1957 !!

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

Discussions similaires

  1. [AC-2010] Sous formulaire avec plusieurs critères
    Par snipkobra dans le forum IHM
    Réponses: 3
    Dernier message: 12/04/2013, 19h45
  2. Formulaire pour plusieurs critères dans une requète
    Par toniodelavega dans le forum IHM
    Réponses: 4
    Dernier message: 06/08/2010, 11h19
  3. [XL-2003] BDMOYENNE avec plusieurs critères dans la même colonne
    Par meliria dans le forum Excel
    Réponses: 6
    Dernier message: 19/05/2010, 22h18
  4. [Toutes versions] Passer d'un formulaire à un autre avec plusieurs critères de lien.
    Par Mat08 dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/09/2009, 15h05
  5. Rechdom dans un formulaire avec deux critères
    Par isabelle b dans le forum IHM
    Réponses: 11
    Dernier message: 13/05/2008, 00h28

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