{Access} liste de choix multiple

Bonjour,

Dans une liste de choix à sélection multiple basée sur une table (500 enr) je cherche à mettre à jour un champ ‘SELECTION’ en ‘OUI’ pour les enregistrements sélectionné.

De telle sorte qu’a tout moment je puisse vérifier ce qui a été déjà sélectionné ou non.

Je pense que je pourrais arriver à cela en utilisant une requête de non correspondance sur les deux tables (la table de la liste et la table dans laquelle s’enregistre les données) mais, je trouve cela un peu lourd d’autant que le champ où se mettent les sélections est un champ type ‘memo’, ce qui m’obligerait, avant, de faire une requête pour extraire les données et les reformater pour pouvoir les comparer …..

Bref, comment faire cela simplement en mettant à jour le champ sélection au fur et à mesure des sélections?? Je ne trouve pas.

Merci d’avance pour vos idées.

Marc F
Configuration: Windows XP
Safari 532.0

14 réponses

  1. bonjour

    tu veux que quand tu selectionne un enregistrement de ta liste de choix le champ selection devienne OUI c ca?
    0
    1. tout simplement ça, mais je coince....
      0
      1. re

        alors il faut que ta liste de chois soit basé sur ta clé primaire (champ_premaire pr requete)
        quand tu la creer access a du te demandé quel champ tu voulais enrtegistre pr t en reservir

        ensuite il te faut creeer une requete de mise a jour:

        update ta_table set validation=true where ton_champ_primaire = forms!nom_du_formulaire!nom_de_ta_liste_de_choix
        exemple:
        update personage set validation = true where n° = forms!recherche!liste2

        ensuite sur clique de ta liste de choix tu creer une procedure evenementielle:

        docmd.openquery "nom-requete"
        me.refresh

        et voila le tour est joué si besoin hesite pas si les message de mise ajour t embete dis moi je te dirais comment les enlever
        0
        1. il faudrais que tu mette la procedure sur double clic
          0
          1. ok, je vais essayé comme tu dis.

            a/ procédure sur double clic, pourquoi??

            b/ dans ce cas je vais faire un bouton qui une fois sélectionné enregistre les données dans ma table, donc, j'ajouterai la requête que tu dis sur cette procédure.

            merci, te tiens au courant dès que j'ai eu le temps de faire ça.
            0
            1. sur double clic car si tu fais defilé ta liste de choix avec la fleche du bas cela executera le code car la fleche du bas corrspond a un clic voila pourquoicdouble clic mais c vrai que tu peu creer un bouton!!!!

              bon courage j'attend de t new
              0
              1. pas facile!!
                je bloque pour deux raisons:

                1/ le champs est de type caractère (pas moyen de convertir en numérique avec cvar ??)
                2/ c'est une sélection multiple donc j'ai une réponse du style: "1""5""16""23""40""50".

                Il faudrait faire une boucle pour extraire chaque nombre et exécuter la requête chaque fois.

                ou alors, j'aimerais mieux ne pas convertir et utiliser un autre champs que ma clé primaire
                (mais là tu avais commencé par me dire qu'il m'en fallait une)

                peut-tu m'aider pour cette boucle ?
                0
                1. oula je comprend pas ce que tu me dis!!!!!!!!!!!!!!

                  pourquoi une boucle!!! pas besoin puisque tu execute la requete a chaque changement une boucle servirai si tu devais parcourir t enregistrement quel sont t champ exactement et kel champ est egal au quel !!!
                  0
                  1. c'est une sélection multiple, c'est là le problème

                    donc dans ma liste de choix, je sélectionne en glissant la souris ou en cliquant sur plusieurs choix. ce qui me donne une valeur contenu dans un champ mémo du style "1""5""16""23""40""50".
                    et j'aimerai que pour chacun de ces enregistrement dans ma table pour la liste de choix le champ sélection se mette sur OUI.

                    pour une seule valeur de type numérique ta procédure fonctionne, je l'ai testée.
                    mais, dans les conditions que je t'indique il faudrait à mon avis faire une boucle pour extraire chaque valeur,
                    j'essaye mais m'y perd un peu.
                    merci de ton aide
                    0
                    1. ok, on ne cherche plus, j'ai trouvé............

                      merci quand même
                      j'ai fais une boucle for each ...next .....
                      et j'ai changé le champ et l'emplacement de " docmd.openquery" qui n'était pas intégré dans la boucle

                      maintenant ça marche

                      a+
                      merci
                      0
                      1. Private Sub enregistrer_Click()
                        Dim varelt As Variant
                        Dim str As String
                        Dim stDocName As String
                        Dim sélection

                        If Me.cours.ItemsSelected.Count = 0 Then
                        MsgBox "aucun cours n'a été sélectionné"
                        Else

                        For Each varelt In Me.cours.ItemsSelected
                        str = str & """" & Me.cours.ItemData(varelt) & """'"
                        Next varelt

                        str = "" & Left(str, Len(str) - 1) & ""
                        Me!cours = str
                        End If

                        str = ""
                        If Me.EAC.ItemsSelected.Count = 0 Then
                        MsgBox "aucune compétences n'a été sélectionnées"
                        Else

                        For Each varelt In Me.EAC.ItemsSelected
                        str = str & """" & Me.EAC.ItemData(varelt) & """'"

                        EAC = Me.EAC.ItemData(varelt)
                        MsgBox EAC
                        stDocName = "EAC-compétences"
                        DoCmd.OpenQuery stDocName, acNormal, acEdit

                        Next varelt

                        str = "" & Left(str, Len(str) - 1) & ""
                        Me!EAC = str
                        End If

                        End Sub

                        PS: les msgbox ne sont là que pour vérifier les valeurs (je les supprime plus tard)
                        0
                        1. bonjour, je continue ce post qui était résolu car le sujet est tjs le même.
                          grâce a votre aide j'ai bien avancé dans mon programme.
                          j'ai encore un petit souci avec mes listes de choix et ne trouve pas:

                          Comment faire dans un formulaire, lorsqu’ avec un bouton ‘valider’ on crée un nouvel enregistrement, les champs des liste de choix sélectionnées précédemment soient désélectionné ?
                          En d’autres termes, comment désélectionner (contraste noir) automatiquement les champs sélectionnés dans une liste de choix multiple.

                          merci d'avance
                          0
                          1. personne pour me venir en aide sur mon dernier post??
                            0