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 selon plusieurs critères


Sujet :

IHM

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut Recherche selon plusieurs critères
    Bonjour,
    Je suis confrontée à un big challenge.

    Contexte :
    Un form contenant plusieurs onglets dans lesquels sont intégrés d'autres forms. A l'ouverture, on a le premier onglet "HOME", les autres onglets sont invisibles.
    - HOME, c'est le menu principal avec des boutons de commande qui permettent de basculer sur les autres onglets selon le bouton sélectionné (les autres onglets non sollicités restant invisibles).
    Il y a également une recherche rapide (Groupe d'options1) selon plusieurs critères (groupe d'options2)


    Problème
    Le recherche est basée sur les 2 gps d'options, c'est-à-dire :
    - Groupe d'options1 : 3 valeurs : 1 - "demandes en cours", 2 - "demandes archivées", 3 - "indifférent" c'est à dire dans toute la base sans distinction du statut. On cherchera dans l'une des trois valeur la/les demande(s) selon les critères suivants
    - groupe d'options2 : 6 valeurs (que je ne détaillerai pas). En sélectionnant l'un des critères, il faudra entrer une valeur, un nom, une date ou choisir parmi une liste déroulante.
    Un bouton de commande "lancer la recherche" exécutera la requête.

    Questions
    1 - Pour commencer est-ce bien judicieux ma manière de procéder ? Ou est-ce que je me complique la vie avec 2 gpes d'options? Si oui, merci pour vos suggestions.
    2 - Est-il possible de lancer la recherche avec ces 2 gps d'options et en mettant tout plein de codes ?

    J'aurai besoin de votre aide.

    En pièce jointe une image
    Images attachées Images attachées  

  2. #2
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Il est tout à fait possible de réaliser ce que tu veux faire!

    Pour ce qui est de la justesse de ta procédure, il serait hasardeux pour moi de m'y pencher ...
    Je dirais simplement que dans la partie critères de recherche, on pourrait mettre des listes déroulantes ou des liste de choix pour certains d'entre eux (Type de transaction; Type de bien; Collaborateur rattaché)

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    C'est le cas : type de bien et collab sont des listes déroulantes issues de tables déjà existantes.
    Type de transaction, j'ai préféré des cases à cocher car c'est que j'ai dans mon form de saisie

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Mon problème c'est que je ne sais pas comment procéder :
    exemple : si je sélectionne "nom du ddeur" dans le 2ème groupe d'options, une zone de texte apparaît demandant d'entrer le nom entier ou la première lettre, puis on lance la recherche.
    SI rien n'est entré => message d'erreur
    Sinon => affichage du ou des enregistrements (dans l'ordre des N° de demandes) dont le nom commence par la lettre entrée ou le nom exact entré.
    Mais la recherche doit s'effectuer dans "ddes en cours" ou "ddes archviées" (si sélectionné) ou dans toute la base (si "indifférent").

    Idem avec les autres critères. Et j'ai peur de ne pas tout pouvoir mettre on click sur le bouton de commande.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjour,
    un peu costaud pour débuter,
    un regard par là pour les recherches multi-critères :
    http://jeannot45.developpez.com/arti...multicriteres/

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Ok si j'ai bien compris. C'est infaisable pour moi.

    Je suis obligée de créer un formulaire

    Tant pis

  7. #7
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Explique la structure des tables sous-jacentes à ton formulaire pour qu'on puisse le coder ensemble!

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    re,
    on ne se décourage pas !
    infaisable n'est pas access même si en débutant ce n'est pas facile

    faire un formulaire où modifier celui existant où l'utiliser avec du code on peut tout envisager mais pour pouvoir t'aider comme le dit Amani Roland il faut en connaitre un peu plus sur ta base :
    l'idéal un copie expurgée zippée pour qu'on voit mieux ta structure et ce qui existe déjà.

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Il n'y a qu'une table sous-jacente, avec 36000 champs (j'exagère mais il y en a beaucoup)
    Elle est la base de mes formulaires : saisie - consult - archives. Ces forms sont intégrés dans des onglets (comme expliqué précédemment).

    En fait, je souhaiterais, une fois les critères de recherche renseignés que être basculée sur l'onglet correspondant (en cours ou archives) sur le ou les enregistrements correspondant aux critères. s'il y en a plusieurs enregistrement, comme c'est le cas si c'est une recherche par la première lettre du nom, je souhaite arriver sur le premier enregistrement trouvé commençant par la lettre concernée et naviguer dans à l'aide des boutons de navigation déjà existants sur les forms pour voir les enregistrements suivants dont le nom commence aussi par la lettre.

  10. #10
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    l'idéal un copie expurgée zippée pour qu'on voit mieux ta structure et ce qui existe déjà.

    Met nous en pièces jointe une copie de ta base de données zippée avec seulement
    • la table en question (sans aucune donnée si tu veux)
    • le formulaire en cours de construction

  11. #11
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut Requête multicritère sur un mouchard!
    Bonjour,

    En espérant que tu puisses t'en inspirer, je met en pièce jointe un extrait de l'une de mes bases de données. Il s'agit d'un requêteur multicritère sur la table des évènements se produisant sur ma base de données.
    Voici la capture d'écran du formulaire:



    Le tout est de construire la fonction de tri! Ne sashant pas le nom des contrôles que tu as mis sur ton formulaire, ni les noms de champs de ta table et leur type, je te propose mon code détaillé et commenté...

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Private Function QueryRefresh()
            Dim Ecr As String
            '"Ecr" va nous permettre de traduire en français courant la requête "Sql"
            Sql = "SELECT * FROM tblEvenements WHERE ((IDEvent)<>0"
            Ecr = "Liste des évènements "
     
            'On dispose
            '   - d'un filtre sur les actions
            '   -    "    "    "    " auteurs
            '   -    "    "    "    " date
            Select Case Me.cadrAction
                Case 1 'Toutes les actions
           '        Sql = Sql
                    Ecr = Ecr & " de TOUS LES TYPES"
                Case 2 'Créations
                    Sql = Sql & " And (Nature Like 'Création*')"
                    Ecr = Ecr & " de type CREATION"
                Case 3 'Modifications
                    Sql = Sql & " And (Nature Like 'Modificat*' Or Nature Like 'Ajout*')"
                    Ecr = Ecr & " de type MODIFICATION"
                Case 4 'Suppressions
                    Sql = Sql & " And (Nature Like 'Suppress*')"
                    Ecr = Ecr & " de type SUPPRESSION"
                Case 5 'Opérations sur session
                    Sql = Sql & " And (Nature Like 'Ouvertu*' Or Nature Like 'Ferme*')"
                    Ecr = Ecr & " de type OPERATION SUR SESSION"
            End Select
     
            If Len(Me.txtAuteur) > 0 Then  'Si la case auteur a été renseignée...
                Sql = Sql & " And User Like '" & Apostrophe2(LTrim(Me.txtAuteur)) & "*'"
                Ecr = Ecr & ", déclenchés par les utilisateurs dont le nom commence par '" & Me.txtAuteur & "'"
            Else
            '   sql = sql
                Ecr = Ecr & ", déclenchés par tous les utilisateurs"
            End If
     
            If IsDate(DateUS3(Me.txtDateMin)) Then  'DateUS3 est une fonction qui permet de mettre la date
                                                    'au format reconnu par Visual Basic (Format US)
                If IsDate(DateUS3(Me.txtDatMax)) Then
                    Sql = Sql & " And (DatEvent>=" & DateUS(Me.txtDateMin) & " And DatEvent<" & DateUS(Me.txtDatMax + 1) & ")"
                    Ecr = Ecr & " entre le " & UCase(Format(Me.txtDateMin, "dddd dd mmmm yyyy")) & " et le " & UCase(Format(Me.txtDatMax, "dddd dd mmmm yyyy"))
                Else
                    Sql = Sql & " And (DatEvent>=" & DateUS(Me.txtDateMin) & ")"
                    Ecr = Ecr & " après la date du " & UCase(Format(Me.txtDateMin, "dddd dd mmmm yyyy"))
                End If
            Else
                If IsDate(DateUS3(Me.txtDatMax)) Then
                    Sql = Sql & " And (DatEvent<" & DateUS(Me.txtDatMax + 1) & ")"
                    Ecr = Ecr & " avant la date du " & UCase(Format(Me.txtDatMax, "dddd dd mmmm yyyy"))
                Else
                   'Sql = Sql
                    Ecr = Ecr & " TOUTES LES DATES comprises"
                End If
            End If
     
            Sql = Sql & ") ORDER BY DatEvent;"
            Me.sfrmMOUCHARD.Form.RecordSource = Sql
            Me.btnPrint.Enabled = True
     
            Me.lblT.Caption = Ecr & "." ' (" & Me.txtReprise & " évènements)"
     
    End Function
    Bien sûr s'il y a des zones d'ombre tu peux toujours demander...
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Merci pour cette aide mais ce n'est pas exactement ce que je veux faire.

    Voici ma base.
    Ne faites pas attention au message de débogage. Il n'existe pas dans ma version originale. C'est suite à la suppression de qq éléments.

    Vous comprendrez peut-être ce que j'essaie de faire.

    Attention ! Précision : base de débutante, de bleue. Soyez indulgents !
    Fichiers attachés Fichiers attachés

  13. #13
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Il est tout à fait possisble de combiner les 2 groupes d'options pour construire une seule procédure de tri.

    1- Pour le groupe d'option "Recherche rapide"
    Je supposerai par la suite que les demandes archivées sont celles qui ont un statut commençant par "Demande*" soit "Demande satisfaite" ou "Demande abandonnée"
    et que les demandes en cours ont pour statut "En cours" ou "Fiche réactivée"

    2- Pour le groupe d'option "Selectionner un critère"
    A ce niveau tout "est on ne peut plus clair"!

    Il est clair qu'en cliquant sur le bouton "Lancer la recherche" on aura pas en retour toujours une seule "demande". C'est pourquoi pour te permettre de voir "en temps réel" les resultats de notre future fonction, je te propose d'ajouter à l'onglet "Acceuil", une zone de liste. On la nommera "listResultat" et elle permettra de voir par la liste des demandes repondant à nos critères (Numéro de fiche, Nom, Prénom).
    Soit "TriRefresh" notre procédure de tri! Essayons de commenter son developpement.

    Commençont par déclarer une variable dans l'entete du module de classe Form_ACCEUILMENU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Option Compare Database
    Dim strSQL As String  ' Variable permettant de stocker le code de la requête de selection
    'On le déclare en entête de module pour qu'il soit utilisable par toutes les fonctions du module
    Ecrivons la procédure proprement dite toujours dans le même module de classe:

    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
    45
    46
     
    Private Sub TriRefresh()
     
        ' Pour rappel, une requête de type sélection à une structure du genre
        ' "Select [...] from [...] where [...] order by [...];" et seules les closes
        ' "Select" et "from" sont obligatoires. Dans notre cas c'est la close "where" qu'il faudra à
        ' chaque fois changer dynamiquement.
     
        strSQL = "Select * from detail where ((Numdetail) <>0" ' L'étoile signifie qu'on sélectionne tous les champs de la table detail!
        ' On amorce à dessein la close where par une condition évidemment vérifiée pour toutes les données (Numdetail différent de zéro)!
     
        ' Voyons alors l'orientation que peut prendre la close where en fonction du groupe d'option "Recherche rapide";
        ' Je te signale au passage que les noms de contrôle par defaut ne facilitent pas du tout la comprehension du code mais on y va...
        Select Case Me.Cadre48
            Case 1 'C'est dans les demandes en cours qu'on cherche!
                strSQL = strSQL & " AND (Statut Like 'Demande*')" ' Le statut commence par 'Demande*'
            Case 2 'C'est les demandes archivées qu'on cherche!
                strSQL = strSQL & " AND (Statut Like 'En*' Or Statut Like 'Fiche*')" ' Commence par 'En*' ou par 'Fiche*'
            Case 3 'On cherche dans toutes les demandes!
                   'Donc rien à changer! c'est à dire srtSQL = strSQL
        End Select
        ' Voyons l'orientation de la close where en fonction en fonction du groupe d'option "Selectionnez un critère"
        Select Case Me.Cadre83
            Case 1 ' On cherche en fonction du N° de la demande
                strSQL = strSQL & " AND (Numdetail =" & Me.Texte57 & ")"
            Case 2 ' On cherche en fonction du Nom du demandeur
                strSQL = strSQL & " AND (Nom Like '" & Me.Texte59 & "*')"
            Case 3 ' On cherche en fonction de la Date de la demande
                strSQL = strSQL & " AND ((DETAIL.Date)>" & DateUS(Me.Texte61) & ") AND ((DETAIL.Date)<" & DateUS(Me.Texte63) & "))"
                ' Le mot "Date" est un mot reservé! par prudence on gardera "DETAIL.Date"
                ' La fonction DateUS est expliquée plus bas
            Case 4 ' On cherche en fonction du Type de transaction
                   ' Je crois savoir que ça peut être "A l'achat", "A la location" ou les deux (D'après le formulaire!)
                strSQL = strSQL & " AND ((DETAIL.[A l'achat])=" & Me.Cocher75 & ") AND ((DETAIL.[A l'achat])=" & Me.Cocher77 & "))"
            Case 5 ' On cherche en fonction du Type de bien
                   ' Ici par souci de temps, j'ai volontairement ignoré reftypebien2 et reftypebien3
                strSQL = strSQL & "  AND (reftypebien='" & Me.Modifiable73 & "')"
            Case 6 ' On cherche en fonction du Collaborateur rattaché
                   ' Attention le champ Refcoll est de type texte bien qu'il s'agisse de données numériques!
                strSQL = strSQL & " AND (DETAIL.Refcoll)='" & Me.Modifiable67 & "')"
        End Select
     
        ' On décide enfin que les données soient classées par ordre croissant des dates
        strSQL = strSQL & " ORDER BY DETAIL.Date;"
        'Un code sql fini toujours par un point-virgule (;) dans Access!
    End Sub
    La fonction DateUS doit être collée dans un module public


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function DateUS(ByVal Dt As Variant) ' Fonction pour mettre la date au format US
    On Error Resume Next                        ' compréhensible pour Visual Basic (mois/jour/année) encadré de dièses
        If IsNull(Dt) Then Exit Function
            DateUS = "#" & Month(Dt) & "/" & Day(Dt) & "/" & Year(Dt) & "#"
        End If
    End Function
    Et le click sur le bouton "lancer la recherche" doit appeler la procédure "TriRefresh" et communiquer le sql générer à la zone de liste pour l'affichage de l'ensemble des demandes qui satisfont à nos critères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Commande40_Click()
        call TriRefresh
        me.listResultat.Recordsource = strSQL
        me.listResultat.Requery   ' Permet d'actualiser la liste!
    End Sub
    Enfin sur l'évènement doubleclick de la liste tu créeras une procédure qui te dirigeras sur l'enregistrement voulu!
    Je n'ai pas encore eu le temps de tester tout ceci mais je pense que ça devrait marcher et que surtout ça reste à ta portée!
    Bonne continuation... je reste à l'écoute.

  14. #14
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut Un début de solution concrêt!
    Bonjour,
    On laisse tomber la zone de liste!

    On pourrait en effet il est tout à fait possible de changer dynamiquement la source d'un sous-formulaire se trouvant sur un autre onglet. Le principe est strictement le même que pour la zone de liste.
    Je te fais remarquer qu'il n'était pas nécessaire de créer des sous-formulaires distincts pour LA SAISIE - L'ARCHIVAGE - LA CONSULTATION.

    Dans ce qui suit j'ai utilisé seulement le sous-formulaire de l'onglet "Consulter". Tu trouveras en fin de lecture ta base avec le code opérationnel en téléchargement.

    J'ai effectué les tests avec le code précedent: il manque juste quelques parenthèses à la fonction TriRefresh qui devient alors:



    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
     
    Private Sub TriRefresh()
        ' Pour rappel, une requête de type sélection à une structure du genre
        ' "Select [...] from [...] where [...] order by [...];" et seules les closes
        ' "Select" et "from" sont obligatoires. Dans notre cas c'est la close "where" qu'il faudra à
        ' chaque fois changer dynamiquement.
     
        strSQL = "Select * from detail where ((Numdetail) <>0" ' L'étoile signifie qu'on sélectionne tous les champs de la table detail!
        ' On amorce à dessein la close where par une condition évidemment vérifiée pour toutes les données (Numdetail différent de zéro)!
     
        ' Voyons alors l'orientation que peut prendre la close where en fonction du groupe d'option "Recherche rapide";
        ' Je te signale au passage que les noms de contrôle par defaut ne facilitent pas du tout la comprehension du code mais on y va...
        Select Case Me.Cadre48
            Case 1 'C'est dans les demandes en cours qu'on cherche!
                strSQL = strSQL & " AND (Statut Like 'Demande*')" ' Le statut commence par 'Demande*'
            Case 2 'C'est dans les demandes archivées qu'on cherche!
                strSQL = strSQL & " AND (Statut Like 'En*' Or Statut Like 'Fiche*')" ' Commence par 'En*' ou par 'Fiche*'
            Case 3 'On cherche dans toutes les demandes!
                   'Donc rien à changer! c'est à dire srtSQL = strSQL
        End Select
        ' Voyons l'orientation de la close where en fonction en fonction du groupe d'option "Selectionnez un critère"
        Select Case Me.Cadre83
            Case 1 ' On cherche en fonction du N° de la demande
                strSQL = strSQL & " AND (Numdetail =" & Me.Texte57 & "))"
            Case 2 ' On cherche en fonction du Nom du demandeur
                strSQL = strSQL & " AND (Nom Like '" & Me.Texte59 & "*'))"
            Case 3 ' On cherche en fonction de la Date de la demande
                strSQL = strSQL & " AND ((DETAIL.Date)>" & DateUS(Me.Texte61) & ") AND ((DETAIL.Date)<" & DateUS(Me.Texte63) & ")))"
                ' Le mot "Date" est un mot reservé! par prudence on gardera "DETAIL.Date"
            Case 4 ' On cherche en fonction du Type de transaction
                   ' Je crois savoir que ça peut être "A l'achat", "A la location" ou les deux (D'après le formulaire!)
                strSQL = strSQL & " AND ((DETAIL.[A l'achat])=" & Me.Cocher75 & ") AND ((DETAIL.[A l'achat])=" & Me.Cocher77 & ")))"
            Case 5 ' On cherche en fonction du Type de bien
                   ' Ici par souci de temps, j'ai volontairement ignoré reftypebien2 et reftypebien3
                strSQL = strSQL & "  AND (reftypebien='" & Me.Modifiable73 & "'))"
            Case 6 ' On cherche en fonction du Collaborateur rattaché
                   ' Attention le champ Refcoll est de type texte bien qu'il s'agisse de données numériques!
                strSQL = strSQL & " AND (DETAIL.Refcoll)='" & Me.Modifiable67 & "'))"
        End Select
     
        ' On décide enfin que les données soient classées par ordre croissant des dates
        strSQL = strSQL & " ORDER BY DETAIL.Date;"
        'Un code sql fini toujours par un point-virgule (;) dans Access!
    End Sub
    Au bouton "Lancer la recherche" on associe le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub Commande40_Click()
        Call TriRefresh
        Me.txtTest = strSQL
        Me.CONSULT.Form.RecordSource = strSQL
        Me.CONSULT.Form.Requery
        Me.CONSULTER.Visible = True
        Me.CONSULTER.SetFocus
        Me.HOME.Visible = False
    End Sub
    Essaie de voir si c'est ce que tu veux. Bien entendu il ne s'agit que d'une ébauche à peaufiner. Je te met en pièce jointe la base que j'ai modifié ici.
    Après téléchargement essaie par exemple de retrouver dans "indifferent" le numéro de demande 129.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/03/2015, 11h31
  2. [XL-2007] Recherche et Copie ligne selon plusieurs critères
    Par BarneyYagami dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/10/2014, 10h24
  3. Remplir une listebox selon plusieurs critères de recherche
    Par kiki89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/03/2014, 15h36
  4. Recherche de ligne selon plusieur critères
    Par djo007 dans le forum Excel
    Réponses: 5
    Dernier message: 25/03/2012, 19h15
  5. Recherche selon plusieurs critères avec doublons
    Par ludo58Jac dans le forum Excel
    Réponses: 3
    Dernier message: 08/10/2011, 23h43

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