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 :

Recherche multi-critères avec 66 critères


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 181
    Points : 55
    Points
    55
    Par défaut Recherche multi-critères avec 66 critères
    Bonjour à tous,

    Dans une base access, je souhaiterai faire un formulaire de recherche multi-critères avec....66 critères possibles.
    Pour comparer, dans un fichier Excel, on peut filtrer en filtre automatique. Mais peut-on faire une équivalence avec access ?

    J'ai regardé du coté des tutos de recherche multi critères mais il n'y a pas autant de critères

    Merci pour votre aide

    Olivier

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    le nombre de critère n'a pas d'importance.
    Mais il va sans doute te falloir une bonne dose de patience pour coder le sql
    Je procèderais comme ceci
    contruire le sql de la source de ta liste ou du sous-formulaire qui doit accueillir le résultat.
    Structuré par exemple comme ceci

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Public Sub RefreshQuery()
     
    'Public car appel extérieur (frmMàJ)
    Dim sql As String, ClauseWHERE As String
     
     
    sql = "SELECT * FROM TaTable"
     'Aménager la clause Where
    If Not Me.chkAuteur Then
       ClauseWHERE = ClauseWHERE & "And CodeArticle like '*" & Me.txtRechAuteur & "*' "
    End If
    If Not Me.chkFamille Then
       If Me.ContientOuPas = "contient" Then
          ClauseWHERE = ClauseWHERE & "And Article = '" & Me.cmbRechFamille & "' "
       Else
          ClauseWHERE = ClauseWHERE & "And Article <> '" & Me.cmbRechFamille & "' "
       End If
    End If
     
    If Not Me.chkType Then
        ClauseWHERE = ClauseWHERE & "And Cap = '" & Me.cmbRechType & "' "
    End If
    Select Case Me.TypeRetard
    Case 1
    ClauseWHERE = ClauseWHERE & "And [Date du jour] Is Null"
    Case 2
    ClauseWHERE = ClauseWHERE & "And [Date du jour] Is not Null"
    End Select
    If Len(ClauseWHERE) = 0 Then
    GoTo AménagerLaQueueSQL
    Else
       ' supprimer le 1er And et Aménager la tête de clause
       ClauseWHERE = " Where " & Right(ClauseWHERE, Len(ClauseWHERE) - 3)
    sql = sql & ClauseWHERE
    End If
    AménagerLaQueueSQL:
    sql = sql & ";"
    'Debug.Print sql
     
    Me.Sfrm.Form.RecordSource = sql
     
    Me.Sfrm.Form.Refresh
     
    End Sub
    et tester au fur et à mesure que tu prends un critère en charge.
    Bon courage iapluka.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Par curiosité qu'est-ce qui justifie l'utilisation de 66 critères ?

    Philippe

  4. #4
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 181
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour

    Par curiosité qu'est-ce qui justifie l'utilisation de 66 critères ?

    Philippe
    La personne pour qui, je construis la base, veux avoir la possibilité de faire des filtres sur tous les champs comme il le fait déja dans Excel mais avec des fichiers différents qui regroupent pour certains la même information. J'ai donc importer les fichiers dans la base, et j'ai construis une requête qui reprends tous les champs de toutes les tables (5 tables), mais la requête contient 66 champs et 106... lignes ! Je pensais construire un formulaire de recherche multi-critères basé sur cette requête, vu le nombre de champs et de lignes. Cela peut representer beaucoup de listes déroulante !!! J'ai pensé également faire des cases à cocher, qui construirait le filtre en fonction d'être cocher ou non. Mais étant pas un expert en VBA, je bloque un peu....

    J'espère que j'ai répondu à ta question.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 181
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,

    le nombre de critère n'a pas d'importance.
    Mais il va sans doute te falloir une bonne dose de patience pour coder le sql
    Je procèderais comme ceci
    contruire le sql de la source de ta liste ou du sous-formulaire qui doit accueillir le résultat.
    Structuré par exemple comme ceci

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Public Sub RefreshQuery()
     
    'Public car appel extérieur (frmMàJ)
    Dim sql As String, ClauseWHERE As String
     
     
    sql = "SELECT * FROM TaTable"
     'Aménager la clause Where
    If Not Me.chkAuteur Then
       ClauseWHERE = ClauseWHERE & "And CodeArticle like '*" & Me.txtRechAuteur & "*' "
    End If
    If Not Me.chkFamille Then
       If Me.ContientOuPas = "contient" Then
          ClauseWHERE = ClauseWHERE & "And Article = '" & Me.cmbRechFamille & "' "
       Else
          ClauseWHERE = ClauseWHERE & "And Article <> '" & Me.cmbRechFamille & "' "
       End If
    End If
     
    If Not Me.chkType Then
        ClauseWHERE = ClauseWHERE & "And Cap = '" & Me.cmbRechType & "' "
    End If
    Select Case Me.TypeRetard
    Case 1
    ClauseWHERE = ClauseWHERE & "And [Date du jour] Is Null"
    Case 2
    ClauseWHERE = ClauseWHERE & "And [Date du jour] Is not Null"
    End Select
    If Len(ClauseWHERE) = 0 Then
    GoTo AménagerLaQueueSQL
    Else
       ' supprimer le 1er And et Aménager la tête de clause
       ClauseWHERE = " Where " & Right(ClauseWHERE, Len(ClauseWHERE) - 3)
    sql = sql & ClauseWHERE
    End If
    AménagerLaQueueSQL:
    sql = sql & ";"
    'Debug.Print sql
     
    Me.Sfrm.Form.RecordSource = sql
     
    Me.Sfrm.Form.Refresh
     
    End Sub
    et tester au fur et à mesure que tu prends un critère en charge.
    Bon courage iapluka.
    Merci pour ton code !!

    En revanche, je ne comprends pas tout...

    Y a t-il quelqu'un qui pourrait me l'expliquer ?

    Merci pour votre aide

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    As-tu regardé le tuto Création d'un formulaire de recherche multicritères ?

    A+

  7. #7
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 181
    Points : 55
    Points
    55
    Par défaut
    Oui j'ai regardé mais le tuto s'applique pour un nombre limité de critères (pas 66 ...)

    A +

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par olivier777 Voir le message
    Oui j'ai regardé mais le tuto s'applique pour un nombre limité de critères (pas 66 ...)
    Tu ne trouveras aucun tuto avec 66 critères, le lien que t'indiques LedZeppII ainsi que les autres tutos sur les formulaires de recherche sont là pour t'indiquer le principe de fonctionnement ce ceux-là.

    Philippe

  9. #9
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 181
    Points : 55
    Points
    55
    Par défaut
    Oui, je l'ai compris, mais j'ai du mal à l'adapter à mon formulaire de recherche.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Si tu nous disais ce que tu as du mal à adapter, car là on tourne en rond

    Tu as eut diverses indications sur le principe général qui consiste à crée dynamiquement une requête SQL et à la mettre comme source d'un sous-formulaire par exemple ou d'une liste.

    Donc où est le problème ?

    Philippe

  11. #11
    Membre habitué Avatar de DurDur
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 244
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    J'ai utilisé ce tuto de LOUFAB



    et ça marche super.

    Il te propose toute les tables ou requêtes présentent dans ton appli.
    Tu fais ton choix.
    Tous les champs du choix précédent sont là.
    Tu fais ton choix, tu donnes la valeur que tu recherches (txt, num, etc)et tu as la liste des enregs correspondants et tu as même le code SQL qui a servi à cette recherche.

    Bonne continuation.

    JC57

Discussions similaires

  1. Recherche de données avec un critère spécifique
    Par TERRIBLE dans le forum Deski
    Réponses: 1
    Dernier message: 06/08/2010, 13h48
  2. requête recherche multi table avec table "lien"
    Par wulfram dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 10/01/2008, 09h40
  3. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33
  4. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00

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