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 :

Ouverture formulaire sur base de 2 zones de listes [AC-2007]


Sujet :

IHM

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut Ouverture formulaire sur base de 2 zones de listes
    Bonjour,
    Mon code suivant fonctionne très bien lorsque j'ouvre un formulaire sur base d'une ou de plusieurs valeurs de ma zone de liste "Famille_filtre".
    J'aimerais maintenant ouvrir ce formulaire sur base de la ou des valeurs de cette zone de liste mais aussi sur base de la valeur ou des valeurs d'une autre zone de liste : "Reference_filtre".

    Je n'y arrive vraiment pas. Merci pour votre aide svp.


    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
    Private Sub Commande106_Click()
    On Error Resume Next
      Dim varI As Variant
      Dim strFiltre As String
     
      strFiltre = ""
      If Me.Famille_filtre.ItemsSelected.Count = 0 Then
        MsgBox "Vous devez sélectionner au moins une famille !", vbExclamation
      Else
        For Each varI In Me!Famille_filtre.ItemsSelected
          If strFiltre <> "" Then strFiltre = strFiltre & " OR "
            strFiltre = strFiltre & "[Famille]='" & _
              Me!Famille_filtre.ItemData(varI) & "'"
          Next varI
          DoCmd.OpenForm "frm_compteBIR", acNormal, , strFiltre
      End If
    End Sub

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    Quelle est la difficulté? Si vous arrivez à créer un premier filtre, qu'est-ce qui vous empêche de créer le deuxième filtre et de CONCATENER les 2 ? Moi, je verrai quelque chose du genre :
    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
     
    Private Sub Commande106_Click()
    On Error Resume Next
      Dim varI As Variant
      Dim strFiltreFam As String, strFiltreRef as String, strFiltre as String
     
      strFiltreFam = ""
      If Me.Famille_filtre.ItemsSelected.Count = 0 Then
        MsgBox "Vous devez sélectionner au moins une famille !", vbExclamation
        Exit Sub
      Else
        For Each varI In Me!Famille_filtre.ItemsSelected
          If strFiltreFam <> "" Then strFiltreFam = strFiltreFam & " OR "
            strFiltreFam= strFiltreFam & "[Famille]='" & _
              Me!Famille_filtre.ItemData(varI) & "'"
          Next varI
      End If
     
      strFiltreRef = ""
      If Me.Reference_filtre.ItemsSelected.Count = 0 Then
        MsgBox "Vous devez sélectionner au moins une référence!", vbExclamation
        Exit Sub
      Else
        For Each varI In Me!Reference_filtre.ItemsSelected
          If strFiltreRef <> "" Then strFiltreRef = strFiltreRef & " OR "
            strFiltreRef = strFiltreRef & "[Reference]='" & _
              Me!Reference_filtre.ItemData(varI) & "'"
          Next varI
      End If
     
          strFiltre = strFiltreFam & " AND " & strFiltreRef
          DoCmd.OpenForm "frm_compteBIR", acNormal, , strFiltre
    End Sub
    Attention, code à améliorer et adapter et non testé.

    Cordialement,

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Cela ne marche pas trop.

    Lorsque je choisis qu'UNE seule famille et une ou plusieurs références, il me reprend bien la référence mais me reprend toutes les familles avec.
    Lorsque je choisis PLUSIEURS familles et une ou plusieurs références, il me reprend les familles sélectionnées sans tenir compte de la ou des références sélectionnées.

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Bonsoir

    Pourrait-on me venir en aide svp ?

    Merci d'avance

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    La difficulté dans les combinaisons de critères est de constituer la règle. En plus quand on peut avoir des multi-sélections, qu'est-ce que ça peut donner???

    Est-ce que vous pouvez donner la règle de base de recherche :

    Soit les données ci-dessous :Pièce jointe 150967

    Est-ce que vous pouvez indiquez les résultats qu'on obtiendrait suite à un choix multi-critère sur les 2 champs.

    Cordialement,

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Bonsoir,

    La difficulté dans les combinaisons de critères est de constituer la règle. En plus quand on peut avoir des multi-sélections, qu'est-ce que ça peut donner???

    Est-ce que vous pouvez donner la règle de base de recherche :

    Soit les données ci-dessous :Pièce jointe 150967

    Est-ce que vous pouvez indiquez les résultats qu'on obtiendrait suite à un choix multi-critère sur les 2 champs.

    Cordialement,
    Sur base de ton exemple, je te donne 2 cas de figure :

    - Si je sélectionne dans ma zone de liste FAMILLE les valeurs ROUGE et BLEU et dans ma zone de liste REFERENCE les valeurs DEUX et QUATRE, mon formulaire devra afficher les ID : 2, 6, 8, 10 et 14.

    - Si je sélectionne dans ma zone de liste FAMILLE la valeur NOIR et dans ma zone de liste REFERENCE la valeur TROIS, mon formulaire devra afficher les ID : 3 et 9.

    PS : la source de mes 2 zones de listes reprend toutes les valeurs par regroupement.

    Merci pour ton aide.

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Ce n'est pas encore clair. Pourquoi dans le cas 1, on ne prend pas le numéro 3 ? (où il y a Rouge)

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Ce n'est pas encore clair. Pourquoi dans le cas 1, on ne prend pas le numéro 3 ? (où il y a Rouge)
    Parce que l' ID 3 a UN comme référence.
    Dans mon cas 1, je choisis les références DEUX et QUATRE.

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    Donc on change notre fusil d'épaule.
    Il faudrait utiliser une autre façon pour constituer le critère avec l'opération IN comme indiqué dans l'article de loufab ICI que je te conseille de lire.

    Ce qui nous donnerait le code ci-dessous (à adapter bien sûr):
    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
     
    Private Sub btnfiltre_Click()
     
    On Error Resume Next
        Dim varI As Variant
        Dim strFiltrFamille As String, strFiltrReference As String
        Dim listvalFamille As String, listvalReference As String
        Dim strfiltre As String
      strfiltre = ""
        If Me.zdlFamille.ItemsSelected.Count = 0 Then
            MsgBox "Vous devez sélectionner au moins une famille !", vbExclamation
            Exit Sub
        Else
            For Each varI In Me.zdlFamille.ItemsSelected
                listvalFamille = listvalFamille & """" & Me.zdlFamille.ItemData(varI) & ""","
            Next varI
        End If
        listvalFamille = Left(listvalFamille, Len(listvalFamille) - 1)
        strFiltrFamille = "Famille IN (" & listvalFamille & ")"
     
        If Me.zdlReference.ItemsSelected.Count = 0 Then
            MsgBox "Vous devez sélectionner au moins une référence !", vbExclamation
        Else
            For Each varI In Me.zdlReference.ItemsSelected
                listvalReference = listvalReference & """" & Me.zdlReference.ItemData(varI) & ""","
            Next varI
        End If
        listvalReference = Left(listvalReference, Len(listvalReference) - 1)
        strFiltrReference = "Reference IN (" & listvalReference & ")"
     
        strfiltre = strFiltrFamille & " AND " & strFiltrReference
        Debug.Print strfiltre
        DoCmd.OpenForm "frm_compteBIR", , , strfiltre
      'Me.Filter = strFiltre
      'Me.FilterOn = True
      'Me.Requery
    End Sub
    Cordialement,

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Bonsoir,

    Donc on change notre fusil d'épaule.
    Il faudrait utiliser une autre façon pour constituer le critère avec l'opération IN comme indiqué dans l'article de loufab ICI que je te conseille de lire.

    Ce qui nous donnerait le code ci-dessous (à adapter bien sûr):
    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
     
    Private Sub btnfiltre_Click()
     
    On Error Resume Next
        Dim varI As Variant
        Dim strFiltrFamille As String, strFiltrReference As String
        Dim listvalFamille As String, listvalReference As String
        Dim strfiltre As String
      strfiltre = ""
        If Me.zdlFamille.ItemsSelected.Count = 0 Then
            MsgBox "Vous devez sélectionner au moins une famille !", vbExclamation
            Exit Sub
        Else
            For Each varI In Me.zdlFamille.ItemsSelected
                listvalFamille = listvalFamille & """" & Me.zdlFamille.ItemData(varI) & ""","
            Next varI
        End If
        listvalFamille = Left(listvalFamille, Len(listvalFamille) - 1)
        strFiltrFamille = "Famille IN (" & listvalFamille & ")"
     
        If Me.zdlReference.ItemsSelected.Count = 0 Then
            MsgBox "Vous devez sélectionner au moins une référence !", vbExclamation
        Else
            For Each varI In Me.zdlReference.ItemsSelected
                listvalReference = listvalReference & """" & Me.zdlReference.ItemData(varI) & ""","
            Next varI
        End If
        listvalReference = Left(listvalReference, Len(listvalReference) - 1)
        strFiltrReference = "Reference IN (" & listvalReference & ")"
     
        strfiltre = strFiltrFamille & " AND " & strFiltrReference
        Debug.Print strfiltre
        DoCmd.OpenForm "frm_compteBIR", , , strfiltre
      'Me.Filter = strFiltre
      'Me.FilterOn = True
      'Me.Requery
    End Sub
    Cordialement,
    Merci Madefemere ; grâce à toi j'ai pas mal appris sur les filtres

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

Discussions similaires

  1. Ouverture formulaire sur clik dans zone de liste
    Par Niaouli02 dans le forum IHM
    Réponses: 4
    Dernier message: 26/05/2017, 12h50
  2. ouverture formulaire sur zone de liste
    Par santacrus dans le forum IHM
    Réponses: 2
    Dernier message: 09/02/2008, 16h41
  3. Ouverture formulaire sur clic souris
    Par Michel DELAVAL dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2006, 21h33
  4. ouverture d un formulaire a partie d'un zone de liste
    Par corwin44 dans le forum Access
    Réponses: 2
    Dernier message: 28/10/2005, 14h55
  5. Ouverture formulaire sur enregistrement precis
    Par mat_lefebvre dans le forum IHM
    Réponses: 7
    Dernier message: 11/10/2004, 15h37

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