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 :

Formulaire de recherche - choix d'opérateurs


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut Formulaire de recherche - choix d'opérateurs
    Bonjour,

    Je dispose d'un formulaire de recherche basé sur une table Tb1, et construit de la sorte :
    - 12 zones de texte indépendantes, placées en entête de formulaire, à renseigner afin de spécifier sa recherche. Elles se nomment txt_research1, txt_research2, etc.
    - un bouton de commande, toujours en entête, qui a pour action d'insérer la requête (correspondant à la recherche) comme source du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmd_research_Click()
    Me.RecordSource = SELECT Tbl1.* WHERE (Tbl1.Champ1=txt_research1.Value) AND ..etc...
    End Sub
    - s'affiche alors le résultat dans la section Détail, avec les enregistrements répondant aux critères.

    Le problème est que j'utilise l'opérateur AND entre chaque critère de recherche, et que ça oblige donc à renseigner tous les champs de la recherche pour avoir un résultat.

    Comment fait-on si l'on veut effectuer sa recherche sur quelques critères seulement, et non sur la totalité ?

    J'espère avoir été clair pour que quelqu'un puisse éclairer ma lanterne

    Merci d'avance !

    Kareg.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Tu ne mets derrière la clause WHERE que les champs pour lesquels la zone de liste associée n'est pas vide.
    Code vb : 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
    Private Sub cmd_research_Click()
    Dim strWHERE As String
     
    If Nz(txt_research1,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "(Tbl1.Champ1=" & txt_research1 & ")"
    End If
     
    If Nz(txt_research2,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "(Tbl1.Champ2=" & txt_research2 & ")"
    End If
    ....
     
    If Nz(txt_research12,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "(Tbl1.Champ12=" & txt_research12 & ")"
    End If
     
    Me.RecordSource = "SELECT Tbl1.* FROM Tbl1 WHERE " & strWHERE
    End Sub
    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour LedZeppII,

    Avant tout : !

    Merci beaucoup, d'après les 1ers essais ça fonctionne parfaitement !


    Pour info si ça intéresse quelqu'un d'autre, il y a juste 2 petits détails à ajuster :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Nz(txt_research1,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "(Tbl1.Champ1='" & txt_research1.Value & "')"
    End If
    Le .Value et les apostrophes ' de part et d'autre des " & ...

    Enfin c'est pour dire quelquechose, car je n'aurai jamais pu trouver le reste tout seul ...

    Merci !!

    Kareg.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut Et avec des dates ?
    Re-bonjour,

    En fait je reviens car je suis confronté à un soucis que je ne comprends pas et que je n'arrive pas à résoudre...

    Le système ci-dessus ne fonctionne pas si le champ de recherche est une date, est-ce normal ?

    J'ai tourné l'affaire dans plein de sens, pour toujours le même résultat :

    Erreur d'éxécution '3464' : Type de données incompatible dans l'expression du critère.
    Merci !

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    oui c'est normal.
    Il y a trois syntaxes selon que le champ est de type numérique, texte ou date.

    Pour le texte tu as trouvé. On met des apostrophes de part et d'autre.
    Pour une valeur numérique on ne met rien, et le séparateur décimal doit être le point (123.45).
    Pour une date on met des dièses de part et d'autre, et la date doit être au format mm/jj/aaaa.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Nz(txt_research1,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       ' Champ1 est de type Date - txt_research1 contient une date
       strWHERE = strWHERE & "(Tbl1.Champ1=#" & Format(txt_research1, "mm/dd/yyyy") & "#)"
    End If
    On peut aussi avoir besoin de forcer le séparateur de date à "\"
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Nz(txt_research1,"")<>"" Then
       If Len(strWHERE)>0 then strWHERE = strWHERE & " AND "
       ' Champ1 est de type Date - txt_research1 contient une date
       strWHERE = strWHERE & "(Tbl1.Champ1=#" & Format(txt_research1, "mm\/dd\/yyyy") & "#)"
    End If
    On peut également remplacer le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Nz(txt_research1,"")<>"" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsDate(txt_research1) Then
    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour et MERCI, c'est tout simplement génial (ça m'épate à chaque fois, y'a pas à dire)


    Edit : Par contre, je reviens à la charge car j'ai un autre cas de figure (le dernier c'est promis) qui bloque...

    Pour d'autres champs je souhaite que la recherche soit le résultat d'une opération entre des valeurs entrées dans 2 champs.
    Après avoir envoyé un premier edit ici je réédite car j'ai finalement trouvé, en passant par des variables numériques (type Single) reprenant l'opération souhaitée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Nz(txt_research8, "") <> "" Then
                If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
                strWHERE = strWHERE & "(Tbl1.Chp8<=" & pararesult1 & ")"
            End If

    Maintenant mon dernier souci c'est que je veux que Tbl1.Chp8 soit à la fois inférieur à une addition,mais aussi supérieur à une autre...
    Et pour l'instant avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Nz(txt_research8, "") <> "" Then
                If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
                strWHERE = strWHERE & "(Tbl1.Chp8<=" & pararesult1 & ")" And strWHERE & "(Tbl1.Chp8>=" & pararesult2 & ")"
            End If
    C'est l'erreur de syntaxe, et mes faibles connaissances en la matière ne m'aident pas à m'en sortir pour le moment (d'ailleurs je suis preneur s'il existe un tuto sur le sujet !) ...




    Kareg.

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    A priori, juste un petit problème dans la construction de la chaîne de caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Nz(txt_research8, "") <> "" Then
                If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
                strWHERE = strWHERE & "(Tbl1.Chp8<=" & pararesult1 & ")" And strWHERE & "(Tbl1.Chp8>=" & pararesult2 & ")"
    End If
    And doit rester à l'intérieur de la chaîne de caractère.
    strWHERE est en trop.

    Ceci devrait mieux aller :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Nz(txt_research8, "") <> "" Then
        If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
        strWHERE = strWHERE & "(Tbl1.Chp8<=" & pararesult1 & ") AND (Tbl1.Chp8>=" & pararesult2 & ")"
    End If
    En gros il faut tout laisser entre double quotes (") sauf les valeurs qui viennent de variables ou de contrôles du formulaire.
    Le code ne fait qu'assembler des éléments d'une chaîne de caractères en les concaténant.

    Une remarque (mais c'est peut-être voulu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "(Tbl1.Chp8<=" & pararesult1 & ") AND (Tbl1.Chp8>=" & pararesult2 & ")"
    Ne fonctionne que si pararesult2 < pararesult1

    Un lien qui peut t'être utile : Débogage : requêtes écrites par VBA

    A+

  8. #8
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Variante
    Bonjour,
    Une petite variante
    1 on déclare un tableau du nombre de champs(dans l'exemple 10 champs)
    2 à chaque MàJ d’un champs on vide ou rempli l’élément du tableau
    3 on intègre la fonction à sa requête SQL

    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 Function leouerre() As String
     
    Dim i As Integer
    Dim dejapasse As Boolean
     
        For i = 0 To 9
            If letablo(i) <> "" Then
                    If dejapasse = True Then
                leouerre = leouerre + " And " + letablo(i)
                Else
                dejapasse = True
                leouerre = leouerre + " WHERE " + letablo(i)
                End If
            End If
        Next i
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    larek = «Select etc.
    larek = larek + « from etc ..
    larek = larek + leouerre
    a+
    ps avec un tableau a 2 dim. on pourra même ajouter des commentaires texte

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut


    Cette fois-ci c'est tout bon

    Merci aussi pour le lien, j'ai comme l'impression qu'il me sera utile à l'avenir

    Naphta je ne me suis pas trop penché sur ta solution (j'ai la tête un peu trop encombrée en ce moment ) mais merci, dès que j'ai plus de temps j'essaye de comprendre ...

    A+ !

    Kareg.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut Et avec une zone de liste ?
    J'étais sûr que j'allais revenir

    En fait j'essaye maintenant de faire la même chose avec une zone de liste en plus (lst_research1), et ça bloque à nouveau...
    Avec ce que j'ai déjà trouvé dans le forum, j'ai tenté ça :

    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
     
    Dim strWHERE, strCrit As String, VarSol As Variant
     
            If Nz(txt_research1, "") <> "" Then
                If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
                strWHERE = strWHERE & "(Tbl1.Chp1='" & txt_research1.Value & "')"
                End If
     
            ....
     
            strCrit = ""
            For Each VarSol In Me!lst_research1.ItemsSelected
     
            If strCrit <> "" Then
            strCrit = strCrit & " OR "
            End If
            strCrit = strCrit & "(tbl1.Chp9 = '" & Me.lst_research1.ItemData(VarSol) & "')"
            Next VarSol
            If strCrit <> "" Then strWHERE = strWHERE & " AND "
            strWHERE = strWHERE & "(" & strCrit & ")"
    J'ai fait plusieurs variantes mais ça reste toujours proche de cette base-là... Si ça se trouve j'en suis loin et la logique n'y est pas du tout !

    Merci (encore et toujours) :-)

    Kareg.

  11. #11
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    La logique est bonne.
    La seule chose que je vois est ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            If strCrit <> "" Then strWHERE = strWHERE & " AND "
            strWHERE = strWHERE & "(" & strCrit & ")"
    Je mettrai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            If strCrit <> "" Then
               If strWHERE <> "" Then strWHERE = strWHERE & " AND "
               strWHERE = strWHERE & "(" & strCrit & ")"
            End If
    A+

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour !

    Après modif, le tri ne fonctionne pas pour autant... Les choix de la zone de liste ne sont tout simplement pas pris en compte.
    Et si on ne met en jeu que la zone de liste (dans le formulaire de recherche), il y a le message d'erreur :

    "Erreur d'éxécution '3145' : Erreur de syntaxe dans la clause WHERE."

    J'avoue que je sèche, mais je continue de tenter des modifs (un peu au feeling ) et de fouiller sur le net

    A+

    Kareg.

  13. #13
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    à la fin du code remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.RecordSource = "SELECT Tbl1.* FROM Tbl1 WHERE " & strWHERE
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Len(strWHERE) > 0 Then
       Me.RecordSource = "SELECT Tbl1.* FROM Tbl1 WHERE " & strWHERE
    Else
       Me.RecordSource = "SELECT Tbl1.* FROM Tbl1"
    End If
    Ça règlera au moins le cas où ne sélectionne aucun critère de choix.

    En revanche je ne vois pas ce qui cloche avec ta zone de liste.
    Voila ce qui fonctionne pour moi (formulaire avec une zone de texte et une zone de liste associée à un champ numérique)
    Code vb : 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
    Private Sub cmdSearch_Click()
    Dim strWHERE As String, strCrit As String, VarSol As Variant
    Dim strSQL As String
     
    strSQL = "SELECT [Produits].[Réf produit], [Produits].[Nom du produit], [Produits].[N° fournisseur] " & _
             "FROM Produits "
     
            If Nz(txt_research1, "") <> "" Then
                If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
                strWHERE = strWHERE & "([Produits].[Nom du produit] LIKE '*" & Me.txt_research1 & "*')"
            End If
     
            strCrit = ""
            For Each VarSol In Me!lst_research1.ItemsSelected
                If strCrit <> "" Then
                   strCrit = strCrit & " OR "
                End If
                strCrit = strCrit & "([Produits].[N° fournisseur] = " & Me.lst_research1.ItemData(VarSol) & ")"
            Next VarSol
            If strCrit <> "" Then
               If Len(strWHERE) > 0 Then strWHERE = strWHERE & " AND "
               strWHERE = strWHERE & "(" & strCrit & ")"
            End If
     
    If Len(strWHERE) > 0 Then
       Me.RecordSource = strSQL & "WHERE " & strWHERE
    Else
       Me.RecordSource = strSQL
    End If
    End Sub
    Essaie de suivre le code pas à pas quand il entre dans la boucle For Each VarSol.

    A+

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    effectivement le problème doit venir d'ailleurs, car maintenant lorsqu'on ne sélectionne que la zone de liste, ça ne bug plus mais le choix n'est pas pour autant pris en compte...
    Comme si la zone de liste n'existait pas

    Je ne vois pas d'où cela peut venir ... Peut-être tout simplement du paramétrage de la zone de liste ?



    Edit :
    Par contre en faisant un suivi pas à pas, avec points d'arrêt sur chaque ligne de la boucle For Each, il ne s'arrête que sur la 1ère ligne (commençant par For Each) !
    Il ne rentre donc pas à l'intérieur et passe directement à la ligne : If strCrit <> "" Then ....

    Et si on en croit l'aide Access : "Le bloc For...Each entre dans la boucle si l'argument group contient au moins un élément "

    Ca confirme donc que les élements sélectionnés dans la zone de liste ne sont pas pris en compte, mais je ne sais absolument pas pourquoi !

    A +

    Kareg.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Je fais remonter le topic car je galère toujours avec ce problème, pas moyen de m'en sortir et je ne comprends pas pourquoi...

    Au cas où une bonne âme experte passait par là, merci d'avance

    Kareg.

  16. #16
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Quelques questions dans le désordre.

    Est-ce que la zone de liste est bien une zone de liste Access ?
    Est-ce que la propriété "Sélection multiple" est bien à "Simple" ou à "Etendu" ?
    Est-ce que c'est la bonne zone de liste (vérifier le nom) ?
    Est-ce que tu sélectionnes au moins une ligne ?

    Je n'arrive absolument pas à reproduire ton problème (ACC2000 et ACC2003).
    Mets ça pour voir avant la boucle For Each ... Next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Me!lst_research1.ItemsSelected.Count & " ligne(s) sélectionnée(s)"
    A+

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour !

    Malheureusement c'est oui pour toutes les questions...
    Avec la msgbox, ça me met 0 ligne(s) sélectionnée(s) alors que j'en sélectionne plusieurs...

    Je vais retenter en recommençant depuis le début (avec une nouvelle zone de liste), mais je ne comprends pas non plus.
    A noter que je suis sous Access 2007 mais que je l'enregistre en version 2003.

    A +

    Kareg.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Les derniers essais apportent une information supplémentaire (!) : je viens de remarquer que la sélection fonctionne si elle n'est pas indiquée en étendue, ni en simple...

    Ça ne résout rien mais sait-on jamais

    Kareg.

  19. #19
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Crée un nouveau formulaire.
    Recrée la liste lst_research1.
    Ajoute un bouton et appelle le cmdDispSel
    Mets ce code pour l'évènement "Sur clic" du bouton
    Code vb : 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
    Private Sub cmdDispSel_Click()
    Dim i As Integer, v As Variant
    Dim strItems1 As String, strItems2 As String
     
    For Each v In Me.lst_Research1.ItemsSelected
        strItems1 = strItems1 & Me.lst_Research1.ItemData(v) & ";"
    Next
     
    For i = 0 To Me.lst_Research1.ListCount - 1
        If Me.lst_Research1.Selected(i) = True Then
           strItems2 = strItems2 & Me.lst_Research1.ItemData(i) & ";"
        End If
    Next
     
    MsgBox strItems1 & vbCrLf & vbCrLf & strItems2
    End Sub
    Si c'est toujours pareil, crée une nouvelle discussion sur ce sujet (sélection multiple zone de liste ACC2007).
    Ça permettra de se concentrer sur ce seul problème.

    A+

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Malheureusement c'est toujours pareil... La MsgBox apparaît vide alors que je sélectionne plusieurs éléments de la liste.
    Je posterai une nouvelle discussion dans 15 jours, date à laquelle je me remettrai à bosser sur la base.

    Merci pour l'aide en tout cas, et à bientôt donc

    Kareg.

Discussions similaires

  1. [2.x] Symfony 2/doctrine2 formulaire de recherche par choix multiple
    Par laurentche dans le forum Symfony
    Réponses: 2
    Dernier message: 03/02/2014, 17h54
  2. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

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