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 :

Me.filter avec zone de liste selection multiple


Sujet :

IHM

  1. #1
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut Me.filter avec zone de liste selection multiple
    Bonjour,
    J'ai le code suivant avec Me.filter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If Not IsNull(Me.EST_deroulant) And Me.EST_deroulant <> "" Then
     If f <> "" Then
      f = f & "AND [Entrée Mses / Transfert Mses / Sortie Mses] = """ & Me.EST_deroulant & """"
       Else
       f = "[Entrée Mses / Transfert Mses / Sortie Mses]  = """ & Me.EST_deroulant & """"
       End If
     
    End If
    Qui fait référence à un liste déroulante avec un choix unique.

    Je souhaiterais faire des choix multiples. J'ai donc insérer une zone de liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Not IsNull(Me.Liste33) And Me.Liste33 <> "" Then
     If f <> "" Then
      f = f & "AND [Type cédant] = """ & Me.Liste33 & """"
       Else
       f = "[Type cédant]  = """ & Me.Liste33 & """"
       End If
     
    End If
    Cela ne fonctionne pas quand je clique sur mon bouton filtre.

    Si quelqu'un a une idée ?

    Dans cette attente

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Désolé mais c'est une piste pas une solution compplète.

    Le problème vient sans doute de la sélection multiple sur la liste qui ne retourne pas 1 seule valeur mais plusieurs.

    Il faudrait mettre quelque chose du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If f <> "" Then
       f = f & "AND "
    end if
     
    f= f & "[Type cédant] = In(" & ici la liste des éléments sélectionnés séparé par des virgules & "")""
    A+

  3. #3
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci marot_r.

    Malheureseument cela ne fonctionne pas !
    Le "me.filter" je ne le maitrise absolument pas. J'ai fait un "copier/coller". Donc les lignes de programations ne me parle absolument pas.
    J'ai essayé le code ci-dessous mais le filtre ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Not IsNull(Me.Liste33) And Me.Liste33 <> "" Then
     If f <> "" Then
      f = f & "AND[Type cédant] = In(" & Me.Liste33 & ")"""
       Else
       f = "[Type cédant]  = In(" & Me.Liste33 & ")"""
       End If
    De plus je ne comprends pas bien le "ici la liste des éléments sélectionnés séparé par des virgules ". Je suis sur un formulaire et l'utilisateur selectionne plusieurs enregistrements. Comment faire figurer à cette endroit des enregistrements qui peuvent changés ?

    D'avance merci

  4. #4
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    Si quelqu'un à une idée je suis preneur.
    Mon problème, pour rappel, j'ai une suite de ligne de code avec la fonction Me.filter
    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
    Private Sub Commande23_Click()
     
    f = ""
    If Not IsNull(Me.Site_deroulant) And Me.Site_deroulant <> "" Then
    f = "[site] LIKE ""*" & Me.Site_deroulant & "*"""
    End If
     
    If Not IsNull(Me.EST_deroulant) And Me.EST_deroulant <> "" Then
     If f <> "" Then
      f = f & "AND [Entrée Mses / Transfert Mses / Sortie Mses] = """ & Me.EST_deroulant & """"
       Else
       f = "[Entrée Mses / Transfert Mses / Sortie Mses]  = """ & Me.EST_deroulant & """"
       End If
    End If
     
    If Not IsNull(Me.Liste33) And Me.Liste33 <> "" Then
     If f <> "" Then
      f = f & "AND[Type cédant] = In(" & Me.Liste33 & ")"""
       Else
       f = "[Type cédant]  = In(" & Me.Liste33 & ")"""
       End If
     End If
     
    If Not IsNull(Me.Date_conf1_deroulant) And Me.Date_conf1_deroulant <> "" And Not IsNull(Me.Date_conf2_deroulant) And Me.Date_conf2_deroulant <> "" Then
     If f <> "" Then
     f = f & " AND ([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     Else
     f = "([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     End If
    End If
     
    Me.Filter = f
    Me.FilterOn = True
     
    End Sub
    Mon problème se situ au niveau de "liste33".

    En effet toutes les sélections sont "simples" : un seul enregistrement par sélection par menu déroulant.
    Je voudrais savoir si il est possible d'intégrer un choix multiple de type, zone de liste ?

  5. #5
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Au secours !!!
    Je n'ai pas de réponse... dois-je considérer que c'est impossible ?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Rempalcer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If f <> "" Then
      f = f & "AND [Entrée Mses / Transfert Mses / Sortie Mses] = """ & Me.EST_deroulant & """"
       Else
       f = "[Entrée Mses / Transfert Mses / Sortie Mses]  = """ & Me.EST_deroulant & """"
       End If
    Par

    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
    If f <> "" Then
       f = f & "AND "
    end if
     
    f= f & "[Type cédant] = In("
     
    dim fIn as string
     
    Dim varItem As Variant:For Each varItem In Me.EST_deroulant .ItemsSelected 'Parcours les éléments sélectionnés dans la liste.
     
       if fIn<>"" then
         fIn=fIn & "," 'Sépare ces éléments par une virgule
       end if
     
       fIn = fIn & varItem
    next VarItem
     
    f= fIn & ")"
    Devrait résoudre ton problème.

    A+

  7. #7
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci marot_r

    J'ai un bugg !!

    Il me renvoie la ligne "Me.Filter = f" en jaune et lorsque je passe dessus
    il affiche :

    Me.Filter =")"

    Ci-joint l'ensemble de 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
    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
    Private Sub Commande23_Click()
     
    f = ""
    If Not IsNull(Me.Site_deroulant) And Me.Site_deroulant <> "" Then
    f = "[site] LIKE ""*" & Me.Site_deroulant & "*"""
    End If
     
     
     
     
    If Not IsNull(Me.EST_deroulant) And Me.EST_deroulant <> "" Then
     If f <> "" Then
      f = f & "AND [Entrée Mses / Transfert Mses / Sortie Mses] = """ & Me.EST_deroulant & """"
       Else
       f = "[Entrée Mses / Transfert Mses / Sortie Mses]  = """ & Me.EST_deroulant & """"
       End If
     
    End If
     
     
    If f <> "" Then
       f = f & "AND "
    End If
     
    f = f & "[Type cédant] = In("
     
    Dim fIn As String
     
    Dim varItem As Variant: For Each varItem In Me.EST_deroulant.ItemsSelected
    'Parcours les éléments sélectionnés dans la liste.
     
       If fIn <> "" Then
         fIn = fIn & ","
         'Sépare ces éléments par une virgule
       End If
     
       fIn = fIn & varItem
    Next varItem
     
    f = fIn & ")"
     
    If Not IsNull(Me.Date_conf1_deroulant) And Me.Date_conf1_deroulant <> "" And Not IsNull(Me.Date_conf2_deroulant) And Me.Date_conf2_deroulant <> "" Then
     If f <> "" Then
     f = f & " AND ([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     Else
     f = "([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     End If
    End If
     
     
     
    Me.Filter = f
    Me.FilterOn = True
     
     
    End Sub

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Ooops faute de frappe :

    remplacer f= fIn & ")" par f= f & fIn & ")"

    A+

  9. #9
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci marot_r
    Désolé pour le code da ma précédente réponse !!

    J'ai encore un problème:
    ça bugg et il me "jaunit" "Me.Filter = f"
    et lorsque je passe la souris dessus in me renvoie :
    "Me.filter = "[type cédant]=In (0,1,2)"

    De plus dans ma liste j'ai bien sélectionné les 3 premières data's de la liste mais ce ne sont pas ces data's (0,1,2) qui sont dans la liste mais des données alphanumériques de type 10A,10B,10C!! c'est normal.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Avant qu'on perde plus de temps là dessus, peux-tu faire l'essai suivant :

    Mettre dans la propriété Filter de ton formulaire, à la main In(ici les valeurs que tu veux). Si ces valeurs sont des textes il faute mettre quelque chose qui ressemble à In("TaValeur1", "TaValeur2", ... , "TaValeurN") et si tu es sur un Access français il fautr remplacer les , par des ;.

    Cela va permettre de vérfier que le filtre fonctionne comme attendu. Après on automatisera le processus.

    A+

  11. #11
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonjour Marot_R
    réponse via un développeur maison


    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Private Sub Commande23_Click()
     
    f = ""
    If Not IsNull(Me.Site_deroulant) And Me.Site_deroulant <> "" Then
    f = "[site] LIKE ""*" & Me.Site_deroulant & "*"""
    End If
     
     
     
    If Not IsNull(Me.EST_deroulant) And Me.EST_deroulant <> "" Then
     If f <> "" Then
      f = f & "AND [Entrée Mses / Transfert Mses / Sortie Mses] = """ & Me.EST_deroulant & """"
       Else
       f = "[Entrée Mses / Transfert Mses / Sortie Mses]  = """ & Me.EST_deroulant & """"
       End If
     
    End If
     
     
     
    'If Not IsNull(Me.Liste33) And Me.Liste33 <> "" Then
     'If f <> "" Then
      'f = f & "AND [Type cédant] = """ & Me.Liste33 & """"
       'Else
       'f = "[Type cédant]  = """ & Me.Liste33 & """"
       'End If
     Dim S As String
     Dim i As Long
        S = ""
        ' parcours tous les éléments de la liste (de l indice 0 à N - 1 : N : le nombre d element de la liste
         For i = 0 To Me.Liste33.ListCount - 1
            ' test si selectionné
           If Me.Liste33.Selected(i) = True Then
            ' oui selectionné on ajoute a une variable s entre ' ' suivi d'une virgule
            ' le ieme element est Me.Liste33.Column(0, i)
            S = S & "'" & Me.Liste33.Column(0, i) & "'" & ","
            Debug.Print S
           End If
        Next
     
        's est construit
     
       If S <> "" Then
            ' s n'est pas vide : on enelve la virgule en trop
            ' on prend tous les elements sauf le dernier
            S = Left(S, Len(S) - 1)
            ' test du filtre
            If f = "" Then
                 ' filtre f vide : on ne commence pas par AND
                f = f & "  [Type cédant]  In (" & S & ")"
            Else
                ' filtre non vide : on commence par AND
                f = f & " AND [Type cédant]  In (" & S & ")"
            End If
           'debug.Print S
        End If
     
     
     
     
    If Not IsNull(Me.Date_conf1_deroulant) And Me.Date_conf1_deroulant <> "" And Not IsNull(Me.Date_conf2_deroulant) And Me.Date_conf2_deroulant <> "" Then
     If f <> "" Then
     f = f & " AND ([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     Else
     f = "([Date conf]) BETWEEN " & CLng(Me.Date_conf1_deroulant) & " AND " & CLng(Me.Date_conf2_deroulant) & ""
     End If
    End If
     
     
     
     
     
    Me.Filter = f
    Me.FilterOn = True
     
     
    End Sub

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Est-ce résolu ? Si oui utiliser le bouton en bas de discussion.

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

Discussions similaires

  1. Formulaire contact html avec fichier texte dans zone de liste select
    Par lemask dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 14/01/2014, 14h54
  2. Réponses: 2
    Dernier message: 14/11/2008, 16h01
  3. Réponses: 4
    Dernier message: 20/06/2006, 11h02
  4. Réponses: 2
    Dernier message: 14/12/2005, 17h08
  5. Liste à selection multiple
    Par marti dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/09/2005, 12h28

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