[access] qui est ce qui s'y connait??

Résolu
Bonjour, je vais faire simple comment filtrer et/ou tout sélectionner grâce à une requête(filtre et sélection sur la même table évidemment)?

Merci de me répondre
Configuration: Windows XP
Safari 525.19

33 réponses

Résumé de la discussion

Filtrer et tout sélectionner via une requête sur une même table constitue la problématique centrale, avec des cas où des valeurs nulles ou vides doivent être traitées pour une récupération complète. Plusieurs répondants évoquent des méthodes variées, allant de l'utilisation du formulaire plutôt que du code VBA, à la modification de la requête R_recherche_total et à la gestion des valeurs NULL ou vides. En cas de doute, les échanges montrent que les solutions dépendent fortement du contexte et que la gestion des valeurs non renseignées influe directement sur le comportement de la requête et l'interaction avec le formulaire.

Bobot (l’IA à votre service)
  1. Je vous fait part de la solution que j'ai trouvé pour une sélection d'un nom ou de tout les noms

    voici tout d'abord mon code

    Private Sub rechercher_Click()
    On Error GoTo Err_rechercher_Click

    Dim stDocName As String
    If (intervenant.Value = "<Tous>") Then
    If (ligne.Value = "<Toutes>") Then
    If (equipement.Value = "<Tout>") Then
    If (ssequipement.Value = "<Tout>") Then
    flag = MsgBox("Veuillez ne sélectionner que deux critères de recherche au maximum")
    stDocName = "M_ouvrir_recherche_total"
    Else
    stDocName = "M_recherche_ssequipement"
    End If
    Else
    stDocName = "M_recherche_equipement"
    End If
    Else
    If (equipement.Value = "<Tout>") Then
    stDocName = "M_recherche_ligne"
    Else
    stDocName = "M_recherche_ligne_equipement"
    End If
    End If
    Else
    If (ligne.Value = "<Toutes>") Then
    If (equipement.Value = "<Tout>") Then
    If (ssequipement.Value = "<Tout>") Then
    stDocName = "M_recherche_intervenant"
    Else
    stDocName = "M_recherche_ssequipement_intervenant"
    End If
    Else
    stDocName = "M_recherche_intervenant_equipement"
    End If
    Else
    stDocName = "M_Recherche_total"
    End If
    End If

    DoCmd.RunMacro stDocName

    Exit_rechercher_Click:
    Exit Sub

    Err_rechercher_Click:
    MsgBox Err.Description
    Resume Exit_rechercher_Click

    lorsque je click sur mon bouton recherche je fait différents test en fonction des 8 valeurs différentes que peut prendre mes 4 listes déroulantes
    en effet, en fonction de ces valeurs et de conditions requises j'ouvre différente macro qui exécute différentes requêtes paramètré de sélection
    si je sélectionne dans une liste "tout" forcément dans ma requête aucune commande sql de sélection ne sera active sur ce paramètre
    la requête de sélection se fera sur les valeurs simple sélectionné par l'utilisateur

    si vous avez des questions n'hésitez pas à me les poser
    0
    1. yg_be j'ai besoin ton aide
      je remonte le sujet
      0
      1. Ouin moi tout ce que je veux c'est que ça sélectionne tout les noms quand je click sur tous et un nom precis lorsque je click sur le nom en question
        Ouin je suis bloqué dessus depuis une semaine et je suis un paté ça me saoul^^

        enfin bref le problème c'est que à travers access les manipulations de formulaire et de sous formulaires liées à des tables des requête et des macros je ne comprend pas tout ce qui se passe, tandis que le code déjà ça me parle plus^^

        reprenons tout depuis le début

        l'événement est lorsque je click sur un nom ou sur "<<TOUS>>" dans ma liste déroulante
        j'insére un code événementielle
        ou j'ouvre un sous formulaire que j'ai créer précédement je l'appel sf_recherche_total
        ce sous formulaire faute de choix est lié à la table T_intervention (table qui je le rappel contient tout les données servant à faire la recherche) dans mon formulaire F_recherche_total j'ai donc qui s'affiche un sous formulaire qui comprend tout les noms de T_interventions, noms qui sont aussi dans ma liste déroulante

        maintenant j'ouvre mon code vba et je met

        //variables bouche trou, il me les faut donc je les mets^^
        Dim valeur As String
        Dim retour As Integer
        //pointeur est le nom de ma liste déroulante et je récupère la valeur sélectionné
        valeur = pointeur.Value
        //je test si j'ai bien récupèré la valeur
        retour = MsgBox("le resultat est" & valeur, vbDefaultButton1)
        //j'ouvre mon sous formulaire
        DoCmd.OpenForm "sf_recherche_total", , , ""
        //si la valeur est "<<TOUS>> j'execute mon code
        If (valeur = "<<TOUS>>") Then
        retour = MsgBox("vous êtes dans le if", vbDefaultButton1)
        //j'execute ma requête mais j'ai un message d'erreur
        me.formulaire.rowsource="SELECT * FROM [R_effectif]"
        Else
        retour = MsgBox("vous êtes dans le else", vbDefaultButton1)
        End If

        0
        1. Contributeur
          Ton but, je pense, c'est que le formulaire fasse la sélection, pas le code VBA.
          0
          1. ben ce que je pense c'est que si ma condition est vérifié je fait une sélection de tout les noms je ne crois pas que ce soit plus difficile que ça non?
            0
            1. Contributeur
              utilises les types dao.database et dao.recordset

              que veux-tu obtenir avec les recordset ? je pense que c'est une fausse piste, dans ton cas.
              0
              1. je l'ai associé à la table qui me paraissait donner la meilleur associations de toute façon je n'avais pas le choix c'était la seule table en rapport avec mon problème
                je vas essayer de retaper me.

                cependant je me penche sur une autre possibilité :

                Dim valeur, mysql As String
                Dim retour As Integer
                Dim dbs As Database
                Dim rst As Recordset
                valeur = pointeur.Value
                retour = MsgBox("le resultat est" & valeur, vbDefaultButton1)
                If (valeur = "<<TOUS>>") Then
                Set dbs = CurrentDb
                mysql = "SELECT * FROM [R_effectif];"
                Set rst = dbs.OpenRecordset(mysql)
                If rst.RecordCount <> 0 Then
                retour = MsgBox("vous êtes dans le 2éme if", vbDefaultButton1)
                End If
                retour = MsgBox("vous êtes dans le if", vbDefaultButton1)
                Else
                retour = MsgBox("vous êtes dans le else", vbDefaultButton1)
                End If
                End Sub

                ne fait pas attention au msgbox elle me servent "point d'arrêt"
                mais j'ai un problème avec le database il me dis que 'est type non défini par l'utilisateur
                0
                1. Contributeur
                  l'instruction suivante change le critére de sélection (exprimée comme une requête SQL) associé au formulaire (ou sous formulaire)
                  me.formulaire.rowsource="SELECT * FROM [R_effectif]"

                  les instructions suivantes ouvrent le formulaire (ou sous formulaire) en lui donnant un filtre pour limiter les enregistrements à inclure dans le formulaire
                  DoCmd.OpenForm "formulaire", , , "intervenant = "BLANC Thierry""
                  ou bien
                  DoCmd.OpenForm "formulaire", , , ""

                  Dans ton code, tu as mis le nom du sous formulaire à la place du nom du formulaire ? Quand tu tapes me. dans ton code, est-ce que le formulaire et le sous formulaire apparaissent dans la petite liste qui s'ouvre à ce momemt-là ?

                  Quand tu a créé ton sous formulaire, tu l'as bien associé à la bonne table ?
                  0
                  1. ok ça je l'ai fait et ensuite explique moi ce que ton code fait surtout les deux ligne docmd.formopen et me.formuliare.rowsource je ne les comprend pas et de plus l'aide de mon vba n'est pas garnie

                    edit je dois faire n'importe quoi la je suis perdu, j'ai créer un sous formulaire en mettant n'importe quoi, et de plus l'erreur se produit toujours je ne comprends pas pourquoi est ce à cause de l'évenement?
                    je rappel que l'événement est lorsque je click ma liste déroulante
                    0
                    1. Contributeur
                      Je pense que F_... c'est un nom de formulaire, pas de requête.

                      Pour créer un sous formulaire dans un formulaire, tu ouvres le formulaire en mode "design".
                      Tu as probablement une petite fenetre avec une dizaine de petits boutons. Tu verifies que le bouron "magicien" (en haut à droite) est actif. Tu cliques sur le bouton "sous formulaire". Tu fais un rectangle pour créer le sous formulaire. Le magicien va venir t'aider...
                      0
                      1. la colonne de quoi de ma table? de ma requête?
                        0
                        1. tu cliques sur le nom de la collonne et voila !
                          0
                          1. je sais que je dois créer un sous formulaire le problème est que je ne sais pas comment faire c'est bête mais je ne vois pas ce que c'est
                            0
                            1. ah non pas du tout c'est le nom de ma requête... dsl, mais qu'est ce qu'un sous formulaire? le code que tu m'a donnée me permet il de créer ce sous formulaire? cependant l'erreur se produisais déjà alors que j'avais recopier le code complet que tu m'avais envoyé
                              0
                              1. Contributeur
                                F_Recherche_total, c'est bien le nom du sous formulaire qui va contenir le résultat de la sélection ? Ce n'est pas le nom du formulaire principal ?
                                0
                                1. désoler de répondre si tard mais la j'ai finis ma journée de stage donc ...^^

                                  l'erreur se produit sur la ligne
                                  Me.F_Recherche_total.RowSource = "SELECT * FROM [R_effectif]"
                                  et il me surligne l'item F_Recherche_total.RowSource
                                  0
                                  1. Contributeur
                                    Sur quelle ligne de code se produit l'erreur ?
                                    Laisse l'éditeur de programme ouvert pendant que tu testes, comme cela il te montrera où est l'erreur.
                                    0
                                    1. je viens de saisir une de tes informations crucial je pense le test pour la sélection de tout les noms marche donc si j'ajoute ta commande qui permet de modifier une requête cela pourrait donner:

                                      Dim valeur As String
                                      valeur = pointeur.Value
                                      If (valeur = "<<TOUS>>") Then
                                      Me.F_Recherche_total.RowSource = "SELECT * FROM [R_effectif]"
                                      End If

                                      non?

                                      problème c'est qu'il me met toujours la même erreur comprend pas pourquoi ce formulaire existe
                                      0
                                      1. il me met une erreur :

                                        erreur de compilation :

                                        membre de méthode ou de données introuvable

                                        cela viens t-il du fait que j'exécute le code lorsque je click sur élément de ma zone de liste (=que l'événement se situe au niveau d'un click sur la zone de liste déroulante) ou alors viens t il du fait qu'il souhaite ouvrir un formulaire F_ssrecherche_total qui n'existe pas?^^

                                        j'en peux plus de ce problème je crack c'est horrible depuis mercredi dernier j'ai tout essayé

                                        enfin bon je suis très heureux d'être tomber sur toi yg_be
                                        0
                                        1. attends attends la je n'y suis plus pourrais tu me re-expliqué car je ne comprends pas désoler c'est pas de la mauvaise volonté mais je comprend plus je suis embrouillé
                                          que dois je faire sur le vba ouvrir un sous formulaire ou le créer? qu'est ce qu'un sous formulaire que va t il faire à quoi va t il ressembler et surtout comment (avec la requête de sélection total que tu as mis) va t il agir sur ma requête R_recherche_total?

                                          autant de question que je me pose car je ne comprend pas les tenants et les aboutissants de ta solution

                                          désoler de mon manque d'expérience mais je suis content d'en apprendre autant avec toi
                                          0
                                          • 1
                                          • 2