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 :

Zone de liste ( Filtre de choix multiple)


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Zone de liste ( Filtre de choix multiple)
    Bonjour,

    J'ai un formulaire de filtrage par zone de liste, le problème c'est que les deux zone de liste utilise le même filtre je n'ai pas un filtrage dynamique
    Nom : 1.jpg
Affichages : 312
Taille : 92,8 Ko
    est ce que vous pouvez m'aider

    Mon code c'est
    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 filtrecu_AfterUpdate()
        Dim varI As Variant
        Dim strFiltre1 As String
        strFiltre1 = ""
        If Me.filtrecu.ItemsSelected.Count = 0 Then
            Me.Filter = ""
            Me.FilterOn = False
     
        Else
            For Each varI In Me!filtrecu.ItemsSelected
                  If strFiltre1 <> "" Then strFiltre1 = strFiltre1 & " OR "
                    strFiltre1 = strFiltre1 & "Fullname_u='" & _
                    Me!filtrecu.ItemData(varI) & "'"
            Next varI
          Me.Filter = strFiltre1
          Me.FilterOn = True
      End If
     
     
    End Sub
     
        Private Sub Form_Open(Cancel As Integer)
        Me.Requery
        End Sub
     
     
     
    Private Sub lstClients_AfterUpdate()
    Dim varI As Variant
    Dim strFiltre As String
        strFiltre = ""
        If Me.lstClients.ItemsSelected.Count = 0 Then
            Me.Filter = ""
            Me.FilterOn = False
     
        Else
            For Each varI In Me!lstClients.ItemsSelected
                  If strFiltre <> "" Then strFiltre = strFiltre & " OR "
                    strFiltre = strFiltre & "Annee_besoin=" & _
                    Me!lstClients.ItemData(varI) ' & "'"
            Next varI
          Me.Filter = strFiltre
          Me.FilterOn = True
      End If
     
    End Sub

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Tu n'as pas du chercher beaucoup suite à mes premiers conseils
    C'est en cherchant que l'on apprend et que l'on progresse
    Essaye avec ce code
    Relis le, essaye de le comprendre et pose moi tes questions si tu ne comprends pas ce qu'il fait
    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
     
    Private Sub filtrecu_AfterUpdate()
        FiltreFormulaire
    End Sub
     
     
    Private Sub lstClients_AfterUpdate()
        FiltreFormulaire
    End Sub
     
    Sub FiltreFormulaire()
    Dim varI As Variant
    Dim strFiltre As String
    Dim strFiltre1 As String
        If Me.filtrecu.ItemsSelected.Count = 0 And Me.lstClients.ItemsSelected.Count = 0 Then
            Me.Filter = ""
            Me.FilterOn = False
        Else
            For Each varI In Me!lstClients.ItemsSelected
                  If strFiltre <> "" Then strFiltre = strFiltre & " OR "
                    strFiltre = strFiltre & "Annee_besoin=" & _
                    Me!lstClients.ItemData(varI)
            Next varI
            If strFiltre <> "" Then strFiltre = "(" & strFiltre & ")"
            For Each varI In Me!filtrecu.ItemsSelected
                If strFiltre1 <> "" Then strFiltre1 = strFiltre1 & " OR "
                  strFiltre1 = strFiltre1 & "Fullname_u='" & _
                  Me!filtrecu.ItemData(varI) & "'"
            Next varI
            If strFiltre1 <> "" Then strFiltre1 = "(" & strFiltre1 & ")"
            If strFiltre = "" Or strFiltre1 = "" Then
                Me.Filter = strFiltre & strFiltre1
            Else
                Me.Filter = strFiltre & " AND " & strFiltre1 'Ajoute le mot AND si les deux filtre sont remplis
            End If
            Me.FilterOn = True
        End If
    End Sub
    @+


    Pensez au tag

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Merci pour l'exemple,

    En effet j'étais entrain d'essayer un code mais en se basons sur le tient, il l'a l'air de marcher

    PAr contre j'ai pas bien compris cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If strFiltre1 <> "" Then strFiltre1 = "(" & strFiltre1 & ")"
            If strFiltre = "" Or strFiltre1 = "" Then
                Me.Filter = strFiltre & strFiltre1
            Else
                Me.Filter = strFiltre & " AND " & strFiltre1

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Dans le premier filtre tu peux avoir une combinaison de plusieurs "OR", donc a la fin de la boucle je teste si le filtre n'est pas vide et je rajoute des parenthèse autour du filtre :

    Annee_besoin=2015 OR Annee_besoin=2016
    devient :
    (Annee_besoin=2015 OR Annee_besoin=2016)
    Idem pour le deuxième filtre "strFiltre1"
    Fullname_u='Dupont' OR Fullname_u='Durand'
    Devient :
    (Fullname_u='Dupont' OR Fullname_u='Durand')
    Ensuite je teste si un des deux filtre est vide "" alors je peux les mettre bout à bout car seul l'un d'eux ou même aucun ne sera remplit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If strFiltre = "" Or strFiltre1 = "" Then
                Me.Filter = strFiltre & strFiltre1
    Sinon je met le mot de liaison "AND entre les deux nécessaire pour le critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Else
                Me.Filter = strFiltre & " AND " & strFiltre1
    [/CODE]

    (Annee_besoin=2015 OR Annee_besoin=2016) AND (Fullname_u='Dupont' OR Fullname_u='Durand')
    @+


    Pensez au tag

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    D'accord et si on a 3 ou 4 filtre on peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If strFiltre = "" Or strFiltre1 = ""  Or  strFiltre2 ="" Then
                Me.Filter = strFiltre & strFiltre1 & strFiltre1
    ????

  6. #6
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Non, car dans le cas ou deux filtres serait remplis il faut bien rajouter un "AND".
    Donc il faudra surement faire des "if" imbriqué ou trouver une autre syntaxe avec une boucle et un tableau de filtre par exemple
    @+


    Pensez au tag

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Bonjour;

    Merci pour la réponse

    J'ai essayé de suivre et j'ai mis le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If strFiltre = "" Or strFiltre1 = "" Then
                If strFiltre2 = "" Then
                Me.Filter = strFiltre & strFiltre1 & strFiltre2
            Else
                Me.Filter = strFiltre & " AND  & strFiltre1 & strFiltre2 "           
             End If
            End If
            Me.FilterOn = True
        End If
    Mais j'arrive pas à sélectionner dans les trois filtre au même moment !

  8. #8
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Pas très logique tout ce code
    Il faut réfléchir un peu à tous les cas possible !

    Essaye cela :
    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
     
     
     
     
     
    vsFilter as String
     
    If strFiltre = "" Then
    	if strFiltre1 = "" Then
            	If strFiltre2 = "" Then
    			vsFilter=""
    		else
    			vsFilter = strFiltre2
     
    		endif
    	else
            	If strFiltre2 = "" Then
    			vsFilter = strFiltre1
    		else
    			vsFilter = strFiltre1 & " AND " & strFiltre2
    		endif
    	end if
    Else
    	if strFiltre1 = "" Then
            	If strFiltre2 = "" Then
    			vsFilter = strFiltre
    		else
    			vsFilter = strFiltre & " AND " & strFiltre2
    		endif
    	else
            	If strFiltre2 = "" Then
    			vsFilter = strFiltre & " AND " & strFiltre1
    		else
    			vsFilter = strFiltre & " AND " & strFiltre1 & " AND " & strFiltre2
    		endif
    	end if
    End if
    Me.Filter = vsFilter
    Me.FilterOn = (vsFilter<>"")
    @+


    Pensez au tag

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Merci pour ton aide, je comprend mieux cette logique,
    par contre c'est quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.FilterOn = (vsFilter<>"")

  10. #10
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    c'est un petit truc de programmeur feignant pour éviter d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (vsFilter<>"") then
    	Me.FilterOn = True
    else
    	Me.FilterOn = False
    end if
    On met directement le résultat du test dans la variable résultante.
    Moins de ligne a écrire et cela revient exactement au même.

    Ma variable FilterOn n'est a vrai que si le filtre n'est pas vide
    @+


    Pensez au tag

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    D'accord Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2009, 09h58
  2. [BO V5] Problème Liste de valeur choix multiple ou %
    Par bastoonet dans le forum Deski
    Réponses: 3
    Dernier message: 09/10/2007, 11h10
  3. zone de liste filtrée
    Par lolothom dans le forum IHM
    Réponses: 8
    Dernier message: 27/09/2007, 14h51
  4. Liste simple et à choix multiples
    Par Enfa dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2007, 09h41
  5. Réponses: 8
    Dernier message: 31/01/2007, 14h19

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