{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

  • Votes
  • Date
  • Date décroissante
  1. bonjour

    tu veux que quand tu selectionne un enregistrement de ta liste de choix le champ selection devienne OUI c ca?
    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
      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.
        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
          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 ?
            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 !!!
              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
                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
                  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)
                    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