OVH Cloud OVH Cloud

Aménagement du module MultipleSelect

5 réponses
Avatar
EnPanne
Bonjour (plus particulièrement à Raymond)

J'ai mis en oeuvre le module MultipleSelect dans un formulaire Access
(http://officesystem.access.free.fr/ex_selection_multiple.htm - merci à
l'auteur)
Ca fonctionne parfaitement si je sélectionne au moins 1 nom dans ma liste de
choix.
Question : comment détourner le message d'erreur s'affichant si aucun nom
n'est sélectionné de façon à ce que le module traite _tous_ les noms de la
liste de choix ?

Merci d'avance.

Cordialement

PG

5 réponses

Avatar
EnPanne
J'ai oublié de dire que ....
j'ai modifié la partie Evènement pour ouvrir un formulaire basé sur la
requête qui va bien :
---original début
If Not PrepareList(Me.Name, Me.Liste1.Name) Then
MsgBox "impossible de lancer la requête"
Else
DoCmd.OpenQuery "requête1"
End If
---original fin
---mon bidule début
...
If Not PrepareList(Me.Name, Me.TC_1.Name) Then
MsgBox "impossible de lancer la requête"
Else
On Error GoTo Err_AchatsTrimestrielsTcFournisseur_Click
Dim stDocName As String
stDocName = "Achats par TC et Fournisseur"
DoCmd.OpenReport stDocName, acPreview
...
---mon bidule fin


"EnPanne" a écrit dans le message de news:

Bonjour (plus particulièrement à Raymond)

J'ai mis en oeuvre le module MultipleSelect dans un formulaire Access
(http://officesystem.access.free.fr/ex_selection_multiple.htm - merci à
l'auteur)
Ca fonctionne parfaitement si je sélectionne au moins 1 nom dans ma liste
de choix.
Question : comment détourner le message d'erreur s'affichant si aucun nom
n'est sélectionné de façon à ce que le module traite _tous_ les noms de la
liste de choix ?

Merci d'avance.

Cordialement

PG



Avatar
Raymond [mvp]
Bonjour.

Par définition, c'est une sélection, donc rien n'est prévu pour sélectionner
l'ensemble des données. Quand on veut l'ensemble il faut supprimer tous les
tests car ils ne servent à rien. je pense qu'il vaudrait mieux agir au
niveau du critère de la requête avec un vraifaux sur le champ pour utiliser
la fonction ou non. Ou alors modifier la fonction en testant s'il y a au
moins une sélection mais ceci va prendre beaucoup de temps.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"EnPanne" a écrit dans le message de news:
%
J'ai oublié de dire que ....
j'ai modifié la partie Evènement pour ouvrir un formulaire basé sur la
requête qui va bien :
---original début
If Not PrepareList(Me.Name, Me.Liste1.Name) Then
MsgBox "impossible de lancer la requête"
Else
DoCmd.OpenQuery "requête1"
End If
---original fin
---mon bidule début
...
If Not PrepareList(Me.Name, Me.TC_1.Name) Then
MsgBox "impossible de lancer la requête"
Else
On Error GoTo Err_AchatsTrimestrielsTcFournisseur_Click
Dim stDocName As String
stDocName = "Achats par TC et Fournisseur"
DoCmd.OpenReport stDocName, acPreview
...
---mon bidule fin


"EnPanne" a écrit dans le message de news:

Bonjour (plus particulièrement à Raymond)

J'ai mis en oeuvre le module MultipleSelect dans un formulaire Access
(http://officesystem.access.free.fr/ex_selection_multiple.htm - merci à
l'auteur)
Ca fonctionne parfaitement si je sélectionne au moins 1 nom dans ma liste
de choix.
Question : comment détourner le message d'erreur s'affichant si aucun nom
n'est sélectionné de façon à ce que le module traite _tous_ les noms de
la liste de choix ?

Merci d'avance.

Cordialement

PG







Avatar
EnPanne
Merci pour ta réponse,

Je me doutais bien qu'il fallait jouer sur la requête. Mais comment ?
Tu m'as donné une piste que je ne pourrai tester qu'au mieux jeudi, car je
ne serai pas relié au réseau contenant mes tables liées avant.
Je viens d'essayer de bricoler ma sauvegarde, mais je me casse le nez à
chaque fois.

Ma requête contient 2 champs principaux (il y en a 12 autres) :
--Champ: Libelle - Table: Entete - Opération: Regroupement - Visible
--Champ: CompareList([Libelle]) - Opération : Où -Invisible - Critère: Vrai
Où mettrais-tu le contrôle "VraiFaux" ?
Je me demande si ce ne serait pas mieux dans la procédure d'appel, qui
pourrait remplir le champ de requête en fonction du résultat de CompareList
au lieu d'afficher la boîte d'information. Mais ça non plus je ne sais pas
faire. :-(

Bonne journée
Cordialement
PG

"Raymond [mvp]" a écrit dans le message de
news: %
..... je pense qu'il vaudrait mieux agir au niveau du critère de la
requête avec un vraifaux sur le champ pour utiliser la fonction ou non.


j'ai modifié la partie Evènement pour ouvrir un formulaire basé sur la
requête qui va bien :
---original début
If Not PrepareList(Me.Name, Me.Liste1.Name) Then
MsgBox "impossible de lancer la requête"
Else
DoCmd.OpenQuery "requête1"
End If
---original fin
---mon bidule début
...
If Not PrepareList(Me.Name, Me.TC_1.Name) Then
MsgBox "impossible de lancer la requête"
Else
On Error GoTo Err_AchatsTrimestrielsTcFournisseur_Click
Dim stDocName As String
stDocName = "Achats par TC et Fournisseur"
DoCmd.OpenReport stDocName, acPreview
...
---mon bidule fin

J'ai mis en oeuvre le module MultipleSelect dans un formulaire Access
(http://officesystem.access.free.fr/ex_selection_multiple.htm - merci à
l'auteur)






Avatar
Raymond [mvp]
Bonjour.

le plus facile serait de construire ta requête par vba dans un module ou
formulaire ( qui consiste à changer la propriété sql d'une requête
existante ) et de lancer ensuite ta requête.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"EnPanne" a écrit dans le message de news:

Merci pour ta réponse,

Je me doutais bien qu'il fallait jouer sur la requête. Mais comment ?
Tu m'as donné une piste que je ne pourrai tester qu'au mieux jeudi, car je
ne serai pas relié au réseau contenant mes tables liées avant.
Je viens d'essayer de bricoler ma sauvegarde, mais je me casse le nez à
chaque fois.

Ma requête contient 2 champs principaux (il y en a 12 autres) :
--Champ: Libelle - Table: Entete - Opération: Regroupement - Visible
--Champ: CompareList([Libelle]) - Opération : Où -Invisible - Critère:
Vrai
Où mettrais-tu le contrôle "VraiFaux" ?
Je me demande si ce ne serait pas mieux dans la procédure d'appel, qui
pourrait remplir le champ de requête en fonction du résultat de
CompareList au lieu d'afficher la boîte d'information. Mais ça non plus je
ne sais pas faire. :-(

Bonne journée
Cordialement
PG


Avatar
EnPanne
Ouh lala !
Pour l'instant, pas à ma portée.
Je crois que je vais me limiter à ce que j'ai pour l'instant.
Surtout que ça m'a été offert. Merci Raymond.

A bientôt, pour d'autres questions.
En fait, Access est une sacrée maladie : quand on a chopé le virus, .....
!!!

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

le plus facile serait de construire ta requête par vba dans un module ou
formulaire ( qui consiste à changer la propriété sql d'une requête
existante ) et de lancer ensuite ta requête.