{Access} liste de choix multiple

Fermé
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 22 nov. 2009 à 10:04
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 6 déc. 2009 à 10:28
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

14 réponses

moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 10:07
bonjour

tu veux que quand tu selectionne un enregistrement de ta liste de choix le champ selection devienne OUI c ca?
0
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 10:14
tout simplement ça, mais je coince....
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 10:54
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
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 11:25
il faudrais que tu mette la procedure sur double clic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 12:09
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
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 15:36
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
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 18:31
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
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 18:36
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
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 18:43
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
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 20:46
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
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 nov. 2009 à 21:04
peux tu collé ton code

merci
0
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
22 nov. 2009 à 21:13
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
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
5 déc. 2009 à 11:30
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
marceuf Messages postés 30 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 21 janvier 2010
6 déc. 2009 à 10:28
personne pour me venir en aide sur mon dernier post??
0