Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2011, 00h46   #1
Invité régulier
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 6
Points : 6
Par défaut Listbox multi-critères et option "select all" - comment adapter ce code?

Bonjour,

Dans mon project j'utilise actuellement le code de ce site (http://www.tek-tips.com/faqs.cfm?fid=6099) afin de pouvoir faire une sélection multiple dans une listbox, les éléments sélectionnés servent ensuite de paramètres dans une requête.
Jusque la, pas de problème, ça fonctionne bien.

Le problème est que j'ai souhaité ajouté dans ma listbox la possibilité pour l'utilisateur de sélectionner (All) pour lui éviter de devoir sélectionner tous les éléments de la listbox (j'ai ajouté (all) via une requête union - je ne sais pas si c est la meilleur solution).

J'ai essayé de remplacer cette partie du code original:

Code :
1
2
    If lbo.ItemsSelected.Count = 0 Then
    IsSelectedVar = True 'return all if no items selected
par

Code :
1
2
    If strListBoxName.Value = "(All)" Then
    IsSelectedVarClients = True 'return all if no items selected
Le but etant de dire au code VBA "Si l'utilisateur a sélectionné (All) tu peux considérer que c est comme si il avait tout sélectionner"

.... mais sans succès - ça ne fonctionne pas du tout.

Bref, votre aide me serait précieuse!

Merci d'avance!

Mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function IsSelectedVarClients( _
        strFormName As String, _
        strListBoxName As String, _
        varValue As Variant) _
            As Boolean
    'strFormName is the name of the form
    'strListBoxName is the name of the listbox
    'varValue is the field to check against the listbox
    Dim lbo As ListBox
    Dim item As Variant
    If IsNumeric(varValue) Then
        varValue = Trim(Str(varValue))
    End If
    Set lbo = Forms(strFormName)(strListBoxName)
     If strListBoxName.Value = "(All)" Then
    IsSelectedVarClients = True 'return all if no items selected
    Else
    For Each item In lbo.ItemsSelected
        If lbo.ItemData(item) = varValue Then
            IsSelectedVarClients = True
            Exit Function
        End If
    Next
et

Code :
SELECT T_NewLaunches.[Client Name] FROM T_NewLaunches UNION SELECT "(All)" FROM T_NewLaunches
(j'ai utilisé union pour pouvoir ajouter "all" dans ma listbox)
Greg12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 16h16   #2
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut j'ai lus un peu ton code et je dirai essaye en fesant ce changement
Code :
1
2
 If lbo.Value = "(All)" Then
    IsSelectedVarClients = True 'return all if no items selected
et la requete laisse la comme elle étais soit :
Code :
1
2
3
SELECT Client Name.*
FROM T_NewLaunches
WHERE IsSelectedVarclients("T_NewLaunches","Client Name",[EmployeeID])=-1;'Je ne suis pas sur quel est ton champ et quel est ta table donc tu vérifira cela
__________________
Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
  • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
  • Si votre Post est indiquez le....
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 17h03   #3
Invité régulier
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 6
Points : 6
Merci pour ta réponse.
J'ai changé le code, malheureusement cela ne semble pas fonctionner. Lorsque je selectione (All), cela ne retourne aucun resultat.
J'ai attaché ma database à ce poste si cela peut aider
Merci,
Greg12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 20h33   #4
Invité régulier
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 6
Points : 6
Ok, trouvé la solution.

Il fallait remplacer

Code :
1
2
3
 If lbo.ItemData(item) = varValue Then
            IsSelectedVarClients = True
            Exit Function
par

Code :
1
2
3
 If lbo.ItemData(item) = varValue or lbo.ItemData(item) ="(All)" Then
            IsSelectedVarClients = True
            Exit Function
Tks
Greg12345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h23.


 
 
 
 
Partenaires

Hébergement Web