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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry (ze Titi)
Le #6332191
Hello 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:
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


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

pierrick.carnet
Le #6332171
Salut Thierry!

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!
Thierry (ze Titi)
Le #6332151
Je vois que tu utilises G2 que, malheureusement, je ne connais pas.
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...

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...
Si c'est cette valeur spécifique tu veux supprimer de la requête, il

suffit d'ajouter un critère de ce style dans la clause WHERE de ta
requête:

...
WHERE leChampContenantLeNom<>'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.
Si c'est une liste qui ne renvoit qu'une seule valeur (pas de sélection

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:
Salut Thierry!

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!


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

pierrick.carnet
Le #6331981
Merci tu m'as déjà beaucoup aidé!

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!
Thierry (ze Titi)
Le #6331941
En fait, tu fais une erreur dans la création de ta requête. Il te faut d'abord parcourir et "enregistrer" tous les enregistrements sélectionnés dans une variable et ensuite seulement construire ta requête. Ca va donc donner quelque chose du style:


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:
Merci tu m'as déjà beaucoup aidé!

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!


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

pierrick.carnet
Le #6331781
Erf... j'ai du mal à te suivre là... j'ai bien un BTS informatique
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 :)
Thierry (ze Titi)
Le #6331761
Erf... j'ai du mal à te suivre là... j'ai bien un BTS informatique
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??
Si, au moins un...


element_selectionne = element_selectione & "Base.Lib_client<>" &
ma_zone_de_liste.ItemData(i) & " AND "
En fait, je crées la partie critère de ta requête...

Idem pour la 2ème partie où j'ai perdu pied en plus avec les éléments
"left" et "len (-5)"... je ne vois pas ce que c'est.
c'est lié à ce que je te disais juste au dessus.

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

pierrick.carnet
Le #6331681
D'accord je viens de piger!!!!

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+++
Publicité
Poster une réponse
Anonyme