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 multicritères groupe d'options


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    A mon compte
    Inscrit en
    Décembre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Décembre 2015
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Filtres multicritères groupe d'options
    Bonsoir à tous,

    Je cale sur un problème qui pourtant, me parait simple à résoudre.

    J'ai 3 groupes d'options, contenant chacune 3 boutons, ce qui fait 27 combinaisons possibles. Ces groupes servent a selectionner des options d'affichage d'état de statistiques.

    Cela fonctionne très bien avec des IF et ELSIF, mais cela fait une quantité de code...

    Je voudrais donc le simplifier de la sorte :

    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
    26
    27
    28
    29
    30
    31
    32
    Dim strFiltre1 As String
    Dim strFiltre2 As String
    Dim strFiltre3 As String
     
    Dim strfiltreGlobal As String
     
    StDocName = "STATS LIEU SIGNATURE / VENDEUR"
     
     
    Select Case Me.CadreSelVentes.Value
        Case 2
        strFiltre1 = "[COMMANDE ANNULEE] = False"
        Case 3
        strFiltre1 = "[COMMANDE ANNULEE] = True"
    End Select
     
    Select Case Me.CadreSelTerrain.Value
        Case 2
        strFiltre2 = "[LOTISSEMENT] = True"
        Case 3
        strFiltre2 = "[LOTISSEMENT] = False"
    End Select
     
    Select Case Me.CadreSelLieu.Value
        Case 2
        strFiltre3 = "[LIEU SIGNATURE] = 1"
        Case 3
        strFiltre3 = "[LIEU SIGNATURE] = 2"
    End Select
     
    strfiltreGlobal = strFiltre1 & strFiltre2 & strFiltre3
    DoCmd.OpenReport StDocName, acViewPreview, , strfiltreGlobal
    Mais cela me fait une erreur quand je selectionne plus d'un critère, sachant que les valeurs 1 ne filtrent rien, et que cela fonctionne quand les 3 groupes sont à la valeur 1

    Nom : 2015-12-07 21_06_33-Microsoft Visual Basic pour Applications - Suivi commercial et gestion des v.png
Affichages : 78
Taille : 2,0 Ko

    Avez vous une idée de la syntaxe qui cloche ?

    Merci a tous pour vos retours

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 862
    Points
    56 862
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Je suppose que ton filtre devrait ressembler à une condition Where en SQL, par exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    [COMMANDE ANNULEE] = False AND [LOTISSEMENT] = True AND [LIEU SIGNATURE] = 1

    Il faut donc a priori rajouter les "AND" dans ta concaténation.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    A mon compte
    Inscrit en
    Décembre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Décembre 2015
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Bonsoir,

    Je suppose que ton filtre devrait ressembler à une condition Where en SQL, par exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    [COMMANDE ANNULEE] = False AND [LOTISSEMENT] = True AND [LIEU SIGNATURE] = 1

    Il faut donc a priori rajouter les "AND" dans ta concaténation.
    Oui tu as raison, cela devrait ressembler a ca, mais cela ne fonctionne pas. avec guillemets, erreur de code, sans guillemets ceci :

    Nom : 2015-12-07 22_03_02-Microsoft Visual Basic.png
Affichages : 71
Taille : 22,8 Ko

    Nom : 2015-12-07 22_03_12-Microsoft Visual Basic pour Applications - Suivi commercial et gestion des v.png
Affichages : 69
Taille : 1,3 Ko

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    A mon compte
    Inscrit en
    Décembre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Décembre 2015
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    en séparant les filtres par & cela donne le filtre suivant

    Nom : 2015-12-07 22_05_27-Microsoft Visual Basic pour Applications - Suivi commercial et gestion des v.png
Affichages : 69
Taille : 5,7 Ko

    Si je mets des AND entre les filtres, le filtre est vide :

    Nom : 2015-12-07 22_06_41-Microsoft Visual Basic pour Applications - Suivi commercial et gestion des v.png
Affichages : 65
Taille : 4,2 Ko

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 862
    Points
    56 862
    Billets dans le blog
    40
    Par défaut
    Plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strfiltreGlobal = strFiltre1 & " AND " & strFiltre2 & " AND " & strFiltre3

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    A mon compte
    Inscrit en
    Décembre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Décembre 2015
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strfiltreGlobal = strFiltre1 & " AND " & strFiltre2 & " AND " & strFiltre3
    Comment ai-je pu passer à coté... Tout ca pour une histoire d'espaces !
    Ca fonctionne !
    Par contre j'ai un autre souci

    Si dans le 1er cadre d'options, je selectionne la valeur 1, cela me retourne une erreur, car je n'ai aucune conditions CASE 1. En fait, sur CASE 1, je veux inhiber le strFiltre1.

    J'ai tenté strFiltre1 = "", = Null, ca ne fonctionne pas.
    Y a t-il une fonction "afficher tout" ?

    J'ai aussi essayé, il n'en veut pas

    strFiltre1 = "[COMMANDE ANNULEE] = False And [COMMANDE ANNULEE] = True"

    En fait l'erreur vient que le filtre commande par AND :
    Nom : 2015-12-07 22_36_46-Microsoft Visual Basic pour Applications - Suivi commercial et gestion des v.png
Affichages : 66
Taille : 4,3 Ko

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    A mon compte
    Inscrit en
    Décembre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Décembre 2015
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    C'est bon, j'ai trouvé la solution...

    Il suffit de mettre un CASE 1= "[DONNEE COMMUNE A TOUS LES ENREGISTREMENTS] = True"

    J'ai un NOM a tous mes dossiers, j'ai donc mis
    CASE 1= "[NOM] = True"

    C'est vicieux par moment ! Il faut ruser !

    Merci en tous cas pour le " AND " f-leb, ca marche mieux avec les espaces

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

Discussions similaires

  1. [AC-2007] Filtre avec groupe d'options
    Par ManuelD2422 dans le forum IHM
    Réponses: 9
    Dernier message: 15/09/2015, 10h56
  2. [AC-2003] Filtres SQL par groupe d'options
    Par minot83 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/01/2014, 17h59
  3. [AC-2013] filtre par groupe d'options sur un formulaire
    Par abdoudiaw dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/09/2013, 16h27
  4. [AC-2007] Filtre avec groupe option
    Par frabeau dans le forum VBA Access
    Réponses: 6
    Dernier message: 19/10/2011, 09h00
  5. [AC-2003] Filtre zone de liste par groupe d'option
    Par HE dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/07/2009, 17h18

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