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 :

créer un bouton recherche enregistrement en vba access 2019


Sujet :

IHM

  1. #1
    Membre confirmé Avatar de lesitadom39
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2015
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 112
    Par défaut créer un bouton recherche enregistrement en vba access 2019
    Bonjour,
    je voudrais remplacer le bouton "recherche enregistrement" créé par l'assistant avec un code VBA qui pointerai sur le champ "nom" de ma table.
    Je ne peux pas utiliser de liste déroulante car ma base comprends plus de 1000 enregistrements.
    Comment programmer ce bouton?
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Lorsque j'ai une liste importante sur laquelle je dois effectuer une recherche, j'utilise souvent une zone de liste qui se met à jour à la volée en fonction de valeurs saisies dans une zone Critère.
    Je te soumets une petite base qui reprend ce principe. Au fur et à mesure que tu saisis les caractères de l'élément recherché, la liste se met à jour et restreint ses items.
    Il te reste ensuite à cliquer sur la liste pour mettre à jour le sous-formulaire.

    Peux-être cela te donnera une idée ?

    Bonne continuation
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Citation Envoyé par Jeannot45 Voir le message

    Lorsque j'ai une liste importante sur laquelle je dois effectuer une recherche, j'utilise souvent une zone de liste qui se met à jour à la volée en fonction de valeurs saisies dans une zone Critère.
    Je te soumets une petite base qui reprend ce principe. Au fur et à mesure que tu saisis les caractères de l'élément recherché, la liste se met à jour et restreint ses items.
    Il te reste ensuite à cliquer sur la liste pour mettre à jour le sous-formulaire.

    Peux-être cela te donnera une idée ?

    Bonne continuation
    Bonsoir Jeannot45,
    Formidable !
    J'ai trouvé là ce que je recherche ici
    https://www.developpez.net/forums/d2...ue-vba-access/
    Merci Jeannot45.
    Cordialement.

  4. #4
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Citation Envoyé par Jeannot45 Voir le message


    Lorsque j'ai une liste importante sur laquelle je dois effectuer une recherche, j'utilise souvent une zone de liste qui se met à jour à la volée en fonction de valeurs saisies dans une zone Critère.
    Je te soumets une petite base qui reprend ce principe. Au fur et à mesure que tu saisis les caractères de l'élément recherché, la liste se met à jour et restreint ses items.
    Il te reste ensuite à cliquer sur la liste pour mettre à jour le sous-formulaire.

    Peux-être cela te donnera une idée ?

    Bonne continuation
    Bonjour membres du forum,
    Effectivement, cela m'ayant donné une idée. Alors ai décidé de l'adopter à mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub TxtRecherche_ListeELEVES_ANNEE_CLASSE_Change()
    Dim l_strWhere As String
     
            l_strWhere = "WHERE NPrenomsEleves Like " & Chr(34) & "*" & Me.ActiveControl.Text & "*" & Chr(34)
     
            With Me.ListeELEVES_ANNEE_CLASSE_Arabe
                .RowSourceType = "Table/Requête"
                .RowSource = "SELECT Eleve_INSCRIT_Req_Plus.Mleeleve, Eleve_INSCRIT_Req_Plus.NPrenomsEleves FROM Eleve_INSCRIT_Req_Plus " & _
                l_strWhere & " ORDER BY Eleve_INSCRIT_Req_Plus.Mleeleve"
                .Requery
            End With
    End Sub
    mais cela s'avère compliqué. Je retourne vers vous pour m'aider à trouver la solution.
    La zone de liste ListeELEVES_ANNEE_CLASSE_Arabe devrait se mettre à jour en fonction de valeurs saisies dans la zone de recherche TxtRecherche_ListeELEVES_ANNEE_CLASSE selon les criteres suivants:
    ID_ETABL_FREQ, ANNEE_SCOL, CLASSE_Arabe,
    Voici le code sql de la requête sur laquelle la zone de liste ListeELEVES_ANNEE_CLASSE_Arabe est est basée:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Eleve_INSCRIT_Req_Plus.ID_ETABL_FREQ, Eleve_INSCRIT_Req_Plus.ANNEE_SCOL, Eleve_INSCRIT_Req_Plus.Num_Inscription, Eleve_INSCRIT_Req_Plus.Mleeleve, Eleve_INSCRIT_Req_Plus.NPrenomsEleves, Eleve_INSCRIT_Req_Plus.NPrenomsElevesAR, Eleve_INSCRIT_Req_Plus.GenreEleveInscrit, Eleve_INSCRIT_Req_Plus.ClasseArabe, [ELEVE]![mleeleve] & " " & [ELEVE]![nom] & " " & [ELEVE]![prenom] AS ELEVE_ECIND, [ELEVE]![nom] & " " & [ELEVE]![prenom] AS Tri_ElèvesComposants
    FROM Eleve_INSCRIT_Req_Plus INNER JOIN ELEVE ON Eleve_INSCRIT_Req_Plus.Mleeleve = ELEVE.mleeleve
    WHERE (((Eleve_INSCRIT_Req_Plus.ANNEE_SCOL) Like "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![lstAnnee_Evaluation] & "*") AND ((Eleve_INSCRIT_Req_Plus.ClasseArabe) Like "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![lstClasse_Evaluation] & "*") AND (([ELEVE]![mleeleve] & " " & [ELEVE]![nom] & " " & [ELEVE]![prenom]) Like "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![TxtRecherche_ListeELEVES_ANNEE_CLASSE] & "*"))
    ORDER BY [ELEVE]![nom] & " " & [ELEVE]![prenom];

    Nom : CaptureCodeRecherche 1.PNG
Affichages : 1085
Taille : 76,7 Ko
    Nom : CaptureCodeRecherche 2.PNG
Affichages : 1037
Taille : 3,1 Ko

    Cordialement.

  5. #5
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    J'ai essayé cette adaptation mais il y a un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim l_strWhere As String
     
        l_strWhere = "WHERE NPrenomsEleves Like " & Chr(34) & "*" & Me.ActiveControl.Text & "*" & Chr(34)
     
            'With Me.ListeELEVES_ANNEE_CLASSE_Arabe
                .RowSourceType = "Table/Requête"
            .RowSource = "SELECT Eleve_INSCRIT_Req_Plus. ID_ETABL_FREQ, Eleve_INSCRIT_Req_Plus. ANNEE_SCOL, Eleve_INSCRIT_Req_Plus.NPrenomsEleves, Eleve_INSCRIT_Req_Plus. ClasseArabe, FROM Eleve_INSCRIT_Req_Plus " & _
                l_strWhere & " ORDER BY Eleve_INSCRIT_Req_Plus.Mleeleve"
               ' .Requery
            End With
    Nom : CaptureCodeRecherche 3.PNG
Affichages : 1069
Taille : 11,6 Ko

    Cordialement.

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    des espaces et une virgule en trop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Eleve_INSCRIT_Req_Plus. ID_ETABL_FREQ, Eleve_INSCRIT_Req_Plus. ANNEE_SCOL,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Eleve_INSCRIT_Req_Plus. ClasseArabe, FROM

  7. #7
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Bonsoir tee_grandbois,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TxtRecherche_ListeELEVES_ANNEE_CLASSE_Change()
    Dim l_strWhere As String
     
        l_strWhere = "WHERE NPrenomsEleves Like " & Chr(34) & "*" & Me.ActiveControl.Text & "*" & Chr(34)
     
            With Me.ListeELEVES_ANNEE_CLASSE_Arabe
                .RowSourceType = "Table/Requête"
            .RowSource = "SELECT Eleve_INSCRIT_Req_Plus.ID_ETABL_FREQ, Eleve_INSCRIT_Req_Plus.ANNEE_SCOL,Eleve_INSCRIT_Req_Plus.NPrenomsEleves, Eleve_INSCRIT_Req_Plus.ClasseArabe FROM Eleve_INSCRIT_Req_Plus " & _
                l_strWhere & " ORDER BY Eleve_INSCRIT_Req_Plus.Mleeleve"
                .Requery
            End With
     
    End Sub
    Nom : CaptureCodeRecherche 4.PNG
Affichages : 1639
Taille : 35,5 Ko

    Sur la capture d'écran, on constate que toutes les années scolaires de l'élève 34 kone zakaria sont affichées.
    Ensuite, les espaces des colonnes se rétrécissent.
    Mon objectif est de filtrer ma rechercher sur ID_ETABL_FREQ, ANNEE_SCOL, CLASSE_Arabe de la dernière année
    en cours.

    Cordialement

  8. #8
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    Mon objectif est de filtrer ma rechercher sur ID_ETABL_FREQ, ANNEE_SCOL, CLASSE_Arabe de la dernière année
    cette méthode de recherche et d'affichage du résultat en temps réel sur l'évènement Change est possible lorsqu'il y a une liste déroulante, avec plusieurs c'est plus compliqué et il est préférable d'utiliser la recherche "classique" multi-critères de cafeine ou de jeannot45

  9. #9
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Oui voici les zones de liste déroulantes qui sont sur le formulaire Frm_EvaluationScolaireElevesECIND_ARABE

    Nom : CaptureCodeRecherche ListeDeroulante 5.PNG
Affichages : 1016
Taille : 6,5 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![ID_ETABL_FREQ] & "*"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![lstAnnee_Evaluation] & "*"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![lstClasse_Evaluation] & "*"
    et cette colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ELEVE_ECIND: [ELEVE]![mleeleve] & " " & [ELEVE]![nom] & " " & [ELEVE]![prenom]
    est filtrée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme "*" & [Formulaires]![Frm_EvaluationScolaireElevesECIND_ARABE]![TxtRecherche_ListeELEVES_ANNEE_CLASSE] & "*"
    Cordialement.

  10. #10
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Bonsoir tee_grandbois,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TxtRecherche_ListeELEVES_ANNEE_CLASSE_Change()
    Dim l_strWhere As String
     
        l_strWhere = "WHERE NPrenomsEleves Like " & Chr(34) & "*" & Me.ActiveControl.Text & "*" & Chr(34)
     
            With Me.ListeELEVES_ANNEE_CLASSE_Arabe
                .RowSourceType = "Table/Requête"
            .RowSource = "SELECT Eleve_INSCRIT_Req_Plus.ID_ETABL_FREQ, Eleve_INSCRIT_Req_Plus.ANNEE_SCOL,Eleve_INSCRIT_Req_Plus.NPrenomsEleves, Eleve_INSCRIT_Req_Plus.ClasseArabe FROM Eleve_INSCRIT_Req_Plus " & _
                l_strWhere & " ORDER BY Eleve_INSCRIT_Req_Plus.Mleeleve"
                .Requery
            End With
     
    End Sub
    Nom : CaptureCodeRecherche 4.PNG
Affichages : 1639
Taille : 35,5 Ko

    Sur la capture d'écran, on constate que toutes les années scolaires de l'élève 34 kone zakaria sont affichées.
    Ensuite, les espaces des colonnes se rétrécissent.
    Mon objectif est de filtrer ma rechercher sur ID_ETABL_FREQ, ANNEE_SCOL, CLASSE_Arabe de la dernière année
    en cours.
    Bonsoir membres du forum,
    Je pense avoir compris en parti le fonctionnement du code de Jeannot45.
    Je constate qu'il marche avec une Table mais pas la Requête.
    Voici mon code adapté:
    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
    Private Sub TxtRecherche_ListeELEVES_Chiffre_Littre_Chiffre_Littre_Change()
    Dim l_strWhere As String
     
            l_strWhere = "WHERE NOM_PRENOMS_COMPLET_FR Like " & Chr(34) & _
            "*" & Me.ActiveControl.Text & "*" & Chr(34)
     
            With Me.ListeELEVES_ANNEE_CLASSE_Arabe_ApercuRecherche
                .RowSourceType = "Table/Requête"
                .RowSource = "SELECT ELEVE.MleEleve, ELEVE.NOM_PRENOMS_COMPLET_FR FROM ELEVE " & _
                l_strWhere & _
                " ORDER BY ELEVE.MleEleve"
                .Requery
            End With
     
    End Sub
    Nom : CaptureCodeRecherche ListeDeroulanteAlphaNumérique 7.PNG
Affichages : 1033
Taille : 42,9 Ko

    Cordialement.

  11. #11
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    comme je l'ai déjà dit, il ne faut pas utiliser l'évènement Change d'une liste mais utiliser l'action Click d'un bouton qui met à jour le résultat après toutes les sélections faites dans les zones de listes ou zones de texte.
    Ton code devrait ressembler à cela (extrait du tuto de cafeine avec quelques aménagements pour coller à ton code):
    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
     Dim SQL As String
     Dim SQLWhere As String
     
    ' la requête contient une clause WHERE qui ne fait aucune exclusion puisque qu'on teste que la clé primaire est <> 0
     
     SQL = "SELECT CodMedia, Titre, Auteur, Famille, Type FROM Medias Where Medias!CodMedia <> 0 "
    ' on teste ensuite chaque zone de liste déroulante pour construire la suite de la clause WHERE  et on l'ajoute à la suite 
    If Me.LstAuteur <> "" Then
        SQL = SQL & "And Medias!Auteur like '*" & Me.txtRechAuteur & "*' "
     End If
     If Me.LstFamille <> "" Then
        SQL = SQL & "And Medias!Famille = '" & Me.cmbRechFamille & "' "
     End If
     If Me.LstResume <> "" Then
        SQL = SQL & "And Medias!Résumé like '*" & Me.txtRechResume & "*' "
     End If
     If Me.LstTitre <> "" Then
        SQL = SQL & "And Medias!Titre like '*" & Me.txtRechTitre & "*' "
     End If
     If Me.LstType <> "" Then
        SQL = SQL & "And Medias!Type = '" & Me.cmbRechType & "' "
     End If
     
     SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     SQL = SQL & ";"
    ' on affiche le nombre d'enregistrements sélectionnés / le nombre total
     Me.lblStats.Caption = DCount("*", "Medias", SQLWhere) & " / " & DCount("*", "Medias")
    ' on recharge la source de données
     Me.lstResults.RowSource = SQL
     Me.lstResults.Requery
    attention, il y a des Like et des =, ce dernier opérateur est préférable à Like si on ne cherche pas sur une partie du champ

  12. #12
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Je vais le tester et vous faire le compte rendu bientôt.
    Merci infiniment pour tout ce que vous réalisez pour nous.
    Cordialement.

  13. #13
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 135
    Par défaut
    Citation Envoyé par Jeannot45 Voir le message


    Lorsque j'ai une liste importante sur laquelle je dois effectuer une recherche, j'utilise souvent une zone de liste qui se met à jour à la volée en fonction de valeurs saisies dans une zone Critère.
    Je te soumets une petite base qui reprend ce principe. Au fur et à mesure que tu saisis les caractères de l'élément recherché, la liste se met à jour et restreint ses items.
    Il te reste ensuite à cliquer sur la liste pour mettre à jour le sous-formulaire.

    Peux-être cela te donnera une idée ?

    Bonne continuation
    Bonsoir Jeannot45,
    J'ai adapté mon code au code de recherche de votre pièce jointe.
    Cependant, je vous prie d'explorer ma discussion ici à partir du post #16 à 18 https://www.developpez.net/forums/d2...not45-cafeine/.
    Cordialement .

Discussions similaires

  1. [AC-2003] créer un bouton recherche associé à un etat access
    Par facteur dans le forum IHM
    Réponses: 3
    Dernier message: 17/12/2013, 16h50
  2. Recherche enregistrements doublon [D7][ACCESS][ADO]
    Par fthdz dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/02/2007, 14h43
  3. Bouton rechercher enregistrement
    Par ludo50 dans le forum Access
    Réponses: 3
    Dernier message: 04/12/2006, 13h27
  4. Comment créer un bouton dans Excel à partir d'Access
    Par dimitrios dans le forum Access
    Réponses: 10
    Dernier message: 06/10/2006, 16h26
  5. Réponses: 1
    Dernier message: 04/10/2006, 14h21

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