Problème de gestion d'une Listbox sous ACCESS
Le
pierrick.carnet

Bonjour à tous!
Voici mon état des lieux du problème que j'ai sur ACCESS:
J'ai une zone de saisie où par exemple je tape "*gef*". Grâce à une
requête, les résultats affichés dans une listbox sont:
- GEFCO AUTO
- GEFCO MESSAGERIE
- MAGEFI
Jusqu'ici tout va pour le mieux, celà fonctionne surper bien! Smiley
Imaginons que je veuille supprimer MAGEFI de ma liste. Y a t-il un
moyen de ne garder que les "GEFCO" dans ma listbox?
- j'ai deja tenté en vain de mettre un bouton qui supprime l'item
sélectionné dans ma Lisbox, mais ACCESS refuse de le faire puisqu'il
s'agit d'une requête et non de valeurs.
Si vous ne comprenez pas quelque chose dites le moi. J'espère que vos
esprits créatifs vont m'eveiller la mémoire. Je ne suis pas novice,
mais je me débrouille comme je peux. Il y a longtemps que je n'ai pas
utilisé Access.
Par avance merci!
Pierrick
Voici mon état des lieux du problème que j'ai sur ACCESS:
J'ai une zone de saisie où par exemple je tape "*gef*". Grâce à une
requête, les résultats affichés dans une listbox sont:
- GEFCO AUTO
- GEFCO MESSAGERIE
- MAGEFI
Jusqu'ici tout va pour le mieux, celà fonctionne surper bien! Smiley
Imaginons que je veuille supprimer MAGEFI de ma liste. Y a t-il un
moyen de ne garder que les "GEFCO" dans ma listbox?
- j'ai deja tenté en vain de mettre un bouton qui supprime l'item
sélectionné dans ma Lisbox, mais ACCESS refuse de le faire puisqu'il
s'agit d'une requête et non de valeurs.
Si vous ne comprenez pas quelque chose dites le moi. J'espère que vos
esprits créatifs vont m'eveiller la mémoire. Je ne suis pas novice,
mais je me débrouille comme je peux. Il y a longtemps que je n'ai pas
utilisé Access.
Par avance merci!
Pierrick
Première chose avant toute autre: Supprime-moi cette adresse e-mail en
clair !!! (sauf si tu veux être envahi de spams, dans ce cas, ça te
regarde... Mais je doute que ton admin réseau apprécie... :o))
Concernant ton problème, il nous manque une info. Tu parles de
supprimer MAGEFI de la liste mais est-ce une suppression de la liste
uniquement ou bien de la base ? Dans ce dernier cas, un simple:
DoCmd.RunSQL "DELETE * FROM laTable WHERE nom='" & laListeDéroulante &
"'"
laListeDéroulante.Requery
devrait suffire.
En ce jour mémorable du lundi 05/11/2007, tu as émis l'idée suivante:
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Euh... comment faire pour enlever mon adresse en clair?....
Il s'agit de supprimer l'élément dans le résultat de ma requête. Il me
faudrait pour cela récupérer la valeur MAGEFI...
Cela dit je ne sais pas comment faire pour récupérer la chaîne de
cacactères que j'aurai noirci dans ma listbox.
Un grand merci pour ton aide!
Mais je suppose que, quelque part, il doit y avoir un gestionnaire de
compte qui te permettra de spécifier ton pseudo, ton adresse mail,
etc...
suffit d'ajouter un critère de ce style dans la clause WHERE de ta
requête:
...
WHERE leChampContenantLeNom<>'MAGEFI'
multiple):
laListBox.Value
te renvoit la valeur sélectionnée.
Si c'est une liste avec sélection multiple, il faut parcourir la
collection ItemsSelected de la liste pour récupérer toutes les valeurs
sélectionnées.
Par exemple:
Dim i
For Each i in laListBox.ItemsSelected
Debug.Print laListBOx.ItemData(i)
Next
va t'afficher la liste des valeurs sélectionnées.
En ce jour mémorable du lundi 05/11/2007, tu as émis l'idée suivante:
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
grâce à ton instruction, j'arrive déjà à localiser le nom sél éctionné
dans ma liste :)!!
En fait c'est une mise à jour de la requête qu'il me faudrait:
J'ai tapé ceci:
For Each i In ma_zone_de_saisie.ItemsSelected
Debug.Print ma_zone_de_liste.ItemData(i)
element_selectionne = ma_zone_de_liste.ItemData(i)
SQL30 = "SELECT Base.Lib_client FROM Base WHERE
(((Base.Lib_client) Like " * " & [zone_de_liste] & " * " And
(Base.Lib_client) <> [element_selectionne])) GROUP BY Base.Lib_client
ORDER BY Base.Lib_client;"
ma_zone_de_liste.RowSource = SQL30
Next
La 1ère partie fonctionne. Ma 2ème partie beaucoup moins bien... Il a
du mal avec les guillemets je crois !!
La requête en tant que telle fonctionne. Il va puiser dans
[zone_de_liste] qui contient tous les éléments *gefc*, et va puiser
dans [element_selectionne] qui correspond au nom que j'ai sélectionné
dans ma liste :). Quand j'exécute la requête directement dans l'onglet
"requete", et que je renseigne ces 2 éléments, il me met bien que les
2 GEFCO et m'a supprimé MAGEFI.
Bien à toi!
element_selectionne=""
For Each i In ma_zone_de_saisie.ItemsSelected
element_selectionne = element_selectione & "Base.Lib_client<>" & ma_zone_de_liste.ItemData(i) & " AND "
Next
SQL30 = _
"SELECT Base.Lib_client " & _
"FROM Base " & _
"WHERE ((Base.Lib_client) Like " *" & [zone_de_liste] & "* " & _
"AND " & left(element_selectionne,len(element_selectionne)-5) & " " & _
"GROUP BY Base.Lib_client " & _
"ORDER BY Base.Lib_client;"
ma_zone_de_liste.RowSource = SQL30
En ce jour mémorable du lundi 05/11/2007, tu as émis l'idée suivante:
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
réseaux depuis 4 ans mais quand même lol!!!
Déja quand je retranscris ta 1ère partie (for each), il me mets plein
d'erreurs dû à tes signes "concaténer" et les guillemets.
Il y en aurait pas de trop par hasard??
J'ai beaucoup de mal a comprendre le:
element_selectionne = element_selectione & "Base.Lib_client<>" &
ma_zone_de_liste.ItemData(i) & " AND "
Idem pour la 2ème partie où j'ai perdu pied en plus avec les élémen ts
"left" et "len (-5)"... je ne vois pas ce que c'est.
Mais bon c'est un peu normal j'ai produit ces requêtes avec le peu de
connaissances qui me restaient...
Je ne perd pas espoir!! Faut juste m'éclairer un peu si possible :)
La boucle For Each me permet de construire une grande partie de la clause WHERE de ta requête.
Si tu suis un peu le cheminement de la boucle, à la fin j'obtiens un truc du style:
base.lib_client
Le "left" et "len (-5)" me permet de supprimer le dernier " AND" qui est en trop.
Mais je parle et je ne fournis pas le principal:
element_selectionne=""
For Each i In ma_zone_de_saisie.ItemsSelected
element_selectionne = element_selectione & "Base.Lib_client<>" & ma_zone_de_liste.ItemData(i) & " AND "
Next
SQL30 = _
"SELECT Base.Lib_client " & _
"FROM Base " & _
"WHERE ((Base.Lib_client) Like *" & [zone_de_liste] & "* " & _
"AND " & left(element_selectionne,len(element_selectionne)-4) & " " & _
"GROUP BY Base.Lib_client " & _
"ORDER BY Base.Lib_client;"
ma_zone_de_liste.RowSource = SQL30
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Mais la syntaxe de ton code ne semble pas correcte (je l'ai testé)...
A moins que je dois me débrouiller pour que tout ce beau monde
fonctionne? :)
Entre autre des erreurs d'objets requis.
déjà la particule "_" lui semble étranger... (pour la 2eme partie),
ainsi que le terme "&" pour la 2eme partie. Pis même les apostrophes y
en a partout...
Je mélange le tout pour que tout fonctionne? :-)
A+++