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 :

Mise à jour listebox selon 3 critères


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 198
    Points : 140
    Points
    140
    Par défaut Mise à jour listebox selon 3 critères
    Bonjour @ tous,
    j'ai une listebox qui se met à jour selon 3 critères, Noms, catégories, année, sur ma base de donnée T_sports de la manière suivante :

    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
    Private Sub txtchercheNoms_AfterUpdate()
     
    strRowSource = "SELECT [Noms],[categorie],[annee]" & "FROM T_Sports " & _
    "WHERE [Noms] like '*" & Me.txtchercheNoms.Text & "*'"
     
     
     
    Liste1.RowSource = strRowSource
    End Sub
     
     
    Private Sub txtcherchecategorie_AfterUpdate()
     
    strRowSource = "SELECT [noms],[categorie],[annee]" & "FROM T_Sports " & _
    "WHERE [categorie] like '*" & Me.txtcherchecategorie.Text & "*'"
     
     
    Liste1.RowSource = strRowSource
     
     
     
    End Sub
     
    Private Sub txtchercheannee_Change()
     
     
     
    strRowSource = "SELECT [noms],[categorie],[annee]" & "FROM T_Sports " & _
    "WHERE [annee] like '*" & Me.txtchercheannee.Text & "*'"
     
     
     
     
     
    Liste1.RowSource = strRowSource
    End Sub
    Alors ça fonctionne, mais avec un seul critère à la fois et donc je peux trier que par les noms, ou que les catégories, ou que les sports pratiqués, je voudrais savoir si mon code peut être modifié pour obtenir un tri sur les 3 critères en même temps.
    ex : Dupont , senior , badminton : il faut que sur ma listebox1 apparaissent tous les Dupont qui sont seniors et qui pratiquent le badminton.

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    dans les 3 evenements Change, tu peux faire une seule procédure appelee- exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub txtchercheNoms_AfterUpdate()
    ProcedureCommune
    End Sub
     
    Sub ProcedureCommune()
    strRowSource = "SELECT [noms],[categorie],[annee]" & "FROM T_Sports " & _
    "WHERE [annee] like '*" & Me.txtchercheannee.Text & "*' AND [Noms] like '*" & Me.txtchercheNoms.Text & "*' and [categorie] like '*" & Me.txtcherchecategorie.Text & "*'"
     
    Liste1.RowSource = strRowSource
    End Sub
    attention aux apostrophes dans les noms ou catégories
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 198
    Points : 140
    Points
    140
    Par défaut
    Bonjour JPA,
    le code fonctionne pas, mais je l'avais déjà essayé, le problème viens de la condition AND qui n'est pas pris en compte d'ailleurs elle passe pas en bleu tu peux écrire AND and ou And c'est pareil ça rectifie pas :/
    Mais l'idée c'est ça, on bute sur quelque chose là :/

    Merci, à te lire.

  4. #4
    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 : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

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


    Une piste que tu pourrais exploiter en lisant le tuto : Listes multifonctions qui explique comment gèrer ce genre de problème.

    Bonne lecture
    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

  5. #5
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Alors écrire Where ou WHERE, AND ou And ou and n'impacte nullement le résultat de la req.

    ÉDIT : Ôtez-nous d'un gros doute, vous êtes bien sur une listbox et non pas sur un subform ? Parce que dans un de vos billets d'hier vous cherchez à remettre à zéro des champs d'un subform de recherche à son ouverture ?

    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
    Private Sub Form_Current()
    Me.listspo.RowSource = "SELECT * FROM tbl_spo;"
    End Sub
    Private Sub txtnom_AfterUpdate()
    'Me.listspo.RowSource = "SELECT * FROM tbl_spo WHERE [nom_spo] Like '*" & Me.txtnom & "*' AND [cat_spo] Like '*" & Me.txtcat & "*' AND [annee_spo] Like '*" & Me.txtannee & "*';" 'si filtre appliqué sur listbox
    FilterForm 'si filtre appliqué sur sform
    End Sub
    Private Sub txtcat_AfterUpdate()
    'Me.listspo.RowSource = "SELECT * FROM tbl_spo WHERE [nom_spo] Like '*" & Me.txtnom & "*' AND [cat_spo] Like '*" & Me.txtcat & "*' AND [annee_spo] Like '*" & Me.txtannee & "*';"'si filtre appliqué sur listbox
    FilterForm 'si filtre appliqué sur sform
    End Sub
    Private Sub txtannee_AfterUpdate()
    'Me.listspo.RowSource = "SELECT * FROM tbl_spo WHERE [nom_spo] Like '*" & Me.txtnom & "*' AND [cat_spo] Like '*" & Me.txtcat & "*' AND [annee_spo] Like '*" & Me.txtannee & "*';"'si filtre appliqué sur listbox
    FilterForm 'si filtre appliqué sur sform
    End Sub
    Sub FilterForm() 'pour sform
    Dim strWhere As String
    If Not IsNull(txtnom) Then strWhere = " and [nom_spo] = '" & txtnom & "'"
    If Not IsNull(txtcat) Then strWhere = strWhere & " and [cat_spo] = '" & txtcat & "'"
    If Not IsNull(txtannee) Then strWhere = strWhere & " and [annee_spo] = '" & txtannee & "'"
     
    If strWhere = "" Then
        Forms!form_spo!form_spo_sf.Form.FilterOn = False
    Else
        strWhere = Mid(strWhere, 5)
        Forms!form_spo!form_spo_sf.Form.Filter = strWhere
        Forms!form_spo!form_spo_sf.Form.FilterOn = True
    End If
    End Sub
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 198
    Points : 140
    Points
    140
    Par défaut
    Bonsoir à tous désolé pour la réponse tardive j'étais en déplacement, je mis recolle.
    hyperion13, tu es sûr de pas confondre ? Le billet précédent été pour faire une somme d'un colonne prix d'une listebox ...la même en fait

    Bon je regarde tout ça et je reviens vers vous, merci beaucoup pour vos réponses, bon week end @ tous.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 198
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Alors écrire Where ou WHERE, AND ou And ou and n'impacte nullement le résultat de la req.
    Je le savais ...
    Citation Envoyé par hyperion13 Voir le message
    ÉDIT : Ôtez-nous d'un gros doute, vous êtes bien sur une listbox et non pas sur un subform ? Parce que dans un de vos billets d'hier vous cherchez à remettre à zéro des champs d'un subform de recherche à son ouverture ?
    c'est une liste box avec des entêtes de colonnes, du coup je ne comprends pas ce bout de code ...

    Citation Envoyé par hyperion13 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If strWhere = "" Then
        Forms!form_spo!form_spo_sf.Form.FilterOn = False
    Else
        strWhere = Mid(strWhere, 5)
        Forms!form_spo!form_spo_sf.Form.Filter = strWhere
        Forms!form_spo!form_spo_sf.Form.FilterOn = True
    End If
    End Sub
    Moi mon userfom s'appelle F_Abonnes
    Ma liste Liste1

    Sur ton exemple form_spo est le nom de ton form et list_spo celui de ta liste donc j'ai transformé en mais il ne se passe rien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If strWhere = "" Then
        Forms!F_Abonnes.FilterOn = False
    Else
        strWhere = Mid(strWhere, 5)
        Forms!F_Abonnes.Filter = strWhere
        Forms!F_Abonnes.FilterOn = True
    End If
    End Sub
    Parceque ton subform s'appelle sf_spo mais tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!form_spo!form_spo_sf.Form.FilterOn = False
    spo_sf ou sf_spo ?



    Merci.

  8. #8
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pourtant, les annotations dans le code Post#5 ne souffrent d'aucune équivoque.
    Pourquoi faire une fixation sur la proc qui concerne le sf alors que vous travaillez sur une listbox ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. [XL-2010] Mise à jour Listbox selon remplissage d'une feuille
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2016, 09h58
  2. Compter le nombre de jours consécutifs selon 2 critères
    Par statinfo dans le forum SAS Base
    Réponses: 1
    Dernier message: 21/11/2015, 20h46
  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. Mise à jour données selon table de correspondance
    Par maxime82 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/10/2010, 17h30
  5. Mise à jour JScrollBar selon JTextArea
    Par maccormick dans le forum Composants
    Réponses: 1
    Dernier message: 31/08/2010, 10h03

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