Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

choix d'une requête à partir de liste déroulante

9 réponses
Avatar
logis
Bonjour,
J'ai plusieurs requêtes multi critères et plutôt que de créer un bouton pour
chaque exécution,
Je cherche à faire exécuter une requête par choix à partir d'une liste
déroulante, sur les noms des requêtes, dans un formulaire.
(la description de chaque requête dans la liste serait un plus....
Merci d'avance.

9 réponses

Avatar
Tisane
Bonjour logis,

J'ai plusieurs requêtes multi critères et plutôt que de créer un
bouton pour chaque exécution,
Je cherche à faire exécuter une requête par choix à partir d'une liste
déroulante, sur les noms des requêtes, dans un formulaire.
(la description de chaque requête dans la liste serait un plus....


Voici un exemple de code à utiliser :

Private Sub Ta_Liste_GotFocus()
Dim AO As AccessObject, dbs As Object
Dim RS As String
For Each AO In Application.CurrentData.AllQueries
RS = AO.Name & ";" & RS
Next AO
Me.Ta_Liste.RowSource = RS
End Sub
---------
Private Sub Ta_Liste_AfterUpdate()
DoCmd.OpenQuery Ta_Liste.Text
End Sub
----------

Pour la description, je n'ai pas regardé. Mais ta demande est intéressante.

--
Tisane

Avatar
Eric
Bonjour,

En reprenant le code de Tisane et en supposant une zone de liste nommée
Liste0, que je préfère pour ce cas à une zone de liste modifiable (ou
déroulante):

Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
' Charger la référence Microsoft DAO 3.x Object Library
On Error GoTo Err_Description
Dim AO As AccessObject
Dim RS As String
Dim bd As Database
Dim strDescription As String
Set bd = CurrentDb
For Each AO In Application.CurrentData.AllQueries
RS = RS & AO.Name & ";"
' récupération de la description de la requête
strDescription =
bd.Containers!Tables.Documents(AO.Name).Properties!Description
RS = RS & strDescription & ";"
Next AO
Me.Liste0.RowSourceType = "Liste Valeurs"
Me.Liste0.RowSource = RS
Me.Liste0.ColumnCount = 2 'liste à 2 colonnes
Me.Liste0.BoundColumn = 1
Me.Liste0.Width = 8 / 2.54 * 1440 ' à ajuster
'la 1ere colonne est masquée, elle contient le nom de la Query
Me.Liste0.ColumnWidths = "0 cm;8 cm" ' à ajuster
Set bd = Nothing
Exit Sub
Err_Description:
If Err.Number = 3270 Then ' absence de Description
strDescription = AO.Name ' description = nom de la Query
Resume Next
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Sub

Et sur l'évènement Double_clic de la liste:

Private Sub Liste0_DblClick(Cancel As Integer)
DoCmd.OpenQuery Liste0.Value
End Sub

Bonjour,
J'ai plusieurs requêtes multi critères et plutôt que de créer un bouton pour
chaque exécution,
Je cherche à faire exécuter une requête par choix à partir d'une liste
déroulante, sur les noms des requêtes, dans un formulaire.
(la description de chaque requête dans la liste serait un plus....
Merci d'avance.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Bonjour Eric,

Super ! Et merci pour ton intervention. J'avoue que c'est un +.
J'ai apprécié qu'en l'absence de description, ce soit le nom de la requête
qui s'affiche quand même.

Une petite précision à l'attention de "logis" : la description ne doit pas
comporter de ";".
Sinon, les requêtes qui suivent n'affichent plus leur description et ne
fonctionnent pas.
Logique, le ";" est le séparateur de liste. Mais il vaut mieux y penser (et
dans la base Comptoirs sur laquelle j'ai fait un test, je suis, bien
entendu, tombée sur ce cas).

Merci encore,
--
Tisane


En reprenant le code de Tisane et en supposant une zone de liste
nommée Liste0, que je préfère pour ce cas à une zone de liste
modifiable (ou déroulante):

Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
' Charger la référence Microsoft DAO 3.x Object Library
On Error GoTo Err_Description
Dim AO As AccessObject
Dim RS As String
Dim bd As Database
Dim strDescription As String
Set bd = CurrentDb
For Each AO In Application.CurrentData.AllQueries
RS = RS & AO.Name & ";"
' récupération de la description de la requête
strDescription > bd.Containers!Tables.Documents(AO.Name).Properties!Description
RS = RS & strDescription & ";"
Next AO
Me.Liste0.RowSourceType = "Liste Valeurs"
Me.Liste0.RowSource = RS
Me.Liste0.ColumnCount = 2 'liste à 2 colonnes
Me.Liste0.BoundColumn = 1
Me.Liste0.Width = 8 / 2.54 * 1440 ' à ajuster
'la 1ere colonne est masquée, elle contient le nom de la Query
Me.Liste0.ColumnWidths = "0 cm;8 cm" ' à ajuster
Set bd = Nothing
Exit Sub
Err_Description:
If Err.Number = 3270 Then ' absence de Description
strDescription = AO.Name ' description = nom de la Query
Resume Next
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Sub

Et sur l'évènement Double_clic de la liste:

Private Sub Liste0_DblClick(Cancel As Integer)
DoCmd.OpenQuery Liste0.Value
End Sub

Bonjour,
J'ai plusieurs requêtes multi critères et plutôt que de créer un
bouton pour chaque exécution,
Je cherche à faire exécuter une requête par choix à partir d'une
liste déroulante, sur les noms des requêtes, dans un formulaire.
(la description de chaque requête dans la liste serait un plus....
Merci d'avance.




Avatar
Eric
Hello Tisane,

Tu avais fait le plus gros donc je n'ai pas beaucoup de mérite. Il doit
y avoir peut-être plus simple.
N'utilisant jamais Comptoir.mdb, je n'avais pas pensé que l'utilisateur
puisse mettre des ';' dans la description de la requête. Si c'est le
cas, le plus simple serait de le remplacer par un autre symbole comme le
- .
Donc rajouter sous la ligne
strDescription = bd.Containers!Tables...
l'intruction :
strDescription = Replace(strDescription, ";", "-")

A vrai dire, on pourrait tout faire en une seule opération mais c'est
une question de lisibilité sur le ng.


Bonjour Eric,

Super ! Et merci pour ton intervention. J'avoue que c'est un +.
J'ai apprécié qu'en l'absence de description, ce soit le nom de la
requête qui s'affiche quand même.

Une petite précision à l'attention de "logis" : la description ne doit
pas comporter de ";".
Sinon, les requêtes qui suivent n'affichent plus leur description et ne
fonctionnent pas.
Logique, le ";" est le séparateur de liste. Mais il vaut mieux y penser
(et dans la base Comptoirs sur laquelle j'ai fait un test, je suis, bien
entendu, tombée sur ce cas).

Merci encore,


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
logis
Merci pour toutes vos contributions,
Je vais mettre en oeuvre dès que possible et je vous tiens au courant.
Question subsidiaire :
derriere toutes ces requêtes, j'appelle aussi des états dépendant de ces
requêtes,
peut on faire la même opération avec les états, si oui, quoi changer dans le
code ?
Merci pour votre réponse.
Sylvere
"Eric" a écrit dans le message de news:

Hello Tisane,

Tu avais fait le plus gros donc je n'ai pas beaucoup de mérite. Il doit
y avoir peut-être plus simple.
N'utilisant jamais Comptoir.mdb, je n'avais pas pensé que l'utilisateur
puisse mettre des ';' dans la description de la requête. Si c'est le
cas, le plus simple serait de le remplacer par un autre symbole comme le
- .
Donc rajouter sous la ligne
strDescription = bd.Containers!Tables...
l'intruction :
strDescription = Replace(strDescription, ";", "-")

A vrai dire, on pourrait tout faire en une seule opération mais c'est
une question de lisibilité sur le ng.


Bonjour Eric,

Super ! Et merci pour ton intervention. J'avoue que c'est un +.
J'ai apprécié qu'en l'absence de description, ce soit le nom de la
requête qui s'affiche quand même.

Une petite précision à l'attention de "logis" : la description ne doit
pas comporter de ";".
Sinon, les requêtes qui suivent n'affichent plus leur description et ne
fonctionnent pas.
Logique, le ";" est le séparateur de liste. Mais il vaut mieux y penser
(et dans la base Comptoirs sur laquelle j'ai fait un test, je suis, bien
entendu, tombée sur ce cas).

Merci encore,


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour,

Si tu veux appliquer le même principe aux états, à savoir disposer d'une
liste affichant la description des états et pouvoir les voir en aperçu
ou les imprimer directement, Walter Stucky l'a fait pour toi ;-)

Ici : http://mypage.bluewin.ch/w.stucki/Etats.htm#ImpressionBatch

Merci pour toutes vos contributions,
Je vais mettre en oeuvre dès que possible et je vous tiens au courant.
Question subsidiaire :
derriere toutes ces requêtes, j'appelle aussi des états dépendant de ces
requêtes,
peut on faire la même opération avec les états, si oui, quoi changer dans le
code ?
Merci pour votre réponse.
Sylvere
--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
logis
Merci pour tous ces conseils, j'ai, depuis quelques succès :
Le 1er exemple donné par walter Stucki fonctionne bien
(liste des états et dble clic dessus pour visualiser..)
J'ai des soucis sur la partie "faciliter la selection des états..., clic sur
description."
C.AD avec les descriptions.
J'arrive à créer la function PeuplerlisteEtats qui fonctionnne bien et
charge la liste des descriptions à l'ouverture du formulaire
Mais après, je suis perdu.
J'ai créé un module pour placer le code de la fonction SortirEtat avec
Private Sub SortirEtat, etc...
et là : erreur de compilation à la ligne :
if isNull (Me!ListeEtats) then ' utilisation incorrecte du mot clé ME'
De plus que faire avec la 1ere procédure évènementielle :
Private Sub Liste Etats....
Sachant qu'il refuse cmdVisualiser_click ??
J'espére que vous pourrez vous y retrouver dans ces explications couplées au
code fourni par le site indiqué.
Merci pour tout

Sylvere


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

Bonjour,

Si tu veux appliquer le même principe aux états, à savoir disposer d'une
liste affichant la description des états et pouvoir les voir en aperçu
ou les imprimer directement, Walter Stucky l'a fait pour toi ;-)

Ici : http://mypage.bluewin.ch/w.stucki/Etats.htm#ImpressionBatch

Merci pour toutes vos contributions,
Je vais mettre en oeuvre dès que possible et je vous tiens au courant.
Question subsidiaire :
derriere toutes ces requêtes, j'appelle aussi des états dépendant de ces
requêtes,
peut on faire la même opération avec les états, si oui, quoi changer
dans le


code ?
Merci pour votre réponse.
Sylvere
--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour,

*Tout* le code doit être écrit dans le module du formulaire. Il faut
déplacer la procédure SortirEtat du module global par un couper et la
coller dans le module du formulaire où sont écrites les autres
procédures. C'est cela qui provoquait l'erreur que tu as eue car dans un
module de portée global, le mot-clé Me n'est jamais reconnu car il ne
fait référence à aucun objet. Tu peux ensuite jeter le module global.

les prcédures suivantes:

Private Sub ListeEtats_DblClick(Cancel As Integer)'<-- appel la
procédure cmdVisualiser
cmdVisualiser_Click
End Sub

Private Sub cmdVisualiser_Click() '<-- Previsualisation par clic sur le
bouton cmdVisualiser
SortirEtat acPreview
End Sub

Private Sub cmdImprimer_Click() ' Imprime l'état sélectionné
SortirEtat acNormal
End Sub

Private Sub ListeEtats_DblClick(Cancel As Integer) & Private Sub
cmdVisualiser_Click() font la même chose : Appel de la procédure
SortirEtat pour s'assurer qu'un état est sélectionné puis, ici, le
prévisualise.
Private Sub cmdImprimer_Click() imprimme si un état est sélectionné.

Pourquoi 2 procédures pour faire le traitement ? Certains opérateurs
sont des Lucky Luke du clic souris donc souvent dble-clic sur la liste,
d'autres plus 'posés', sélectionnes l'état et ensuite clic sur le bouton ;-)

C'est plus clair ?


Merci pour tous ces conseils, j'ai, depuis quelques succès :
Le 1er exemple donné par walter Stucki fonctionne bien
(liste des états et dble clic dessus pour visualiser..)
J'ai des soucis sur la partie "faciliter la selection des états..., clic sur
description."
C.AD avec les descriptions.
J'arrive à créer la function PeuplerlisteEtats qui fonctionnne bien et
charge la liste des descriptions à l'ouverture du formulaire
Mais après, je suis perdu.
J'ai créé un module pour placer le code de la fonction SortirEtat avec
Private Sub SortirEtat, etc...
et là : erreur de compilation à la ligne :
if isNull (Me!ListeEtats) then ' utilisation incorrecte du mot clé ME'
De plus que faire avec la 1ere procédure évènementielle :
Private Sub Liste Etats....
Sachant qu'il refuse cmdVisualiser_click ??
J'espére que vous pourrez vous y retrouver dans ces explications couplées au
code fourni par le site indiqué.
Merci pour tout

Sylvere


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


Bonjour,

Si tu veux appliquer le même principe aux états, à savoir disposer d'une
liste affichant la description des états et pouvoir les voir en aperçu
ou les imprimer directement, Walter Stucky l'a fait pour toi ;-)

Ici : http://mypage.bluewin.ch/w.stucki/Etats.htm#ImpressionBatch


Merci pour toutes vos contributions,
Je vais mettre en oeuvre dès que possible et je vous tiens au courant.
Question subsidiaire :
derriere toutes ces requêtes, j'appelle aussi des états dépendant de ces
requêtes,
peut on faire la même opération avec les états, si oui, quoi changer



dans le

code ?
Merci pour votre réponse.
Sylvere


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Hb
Merci pour l'aide
"Eric" a écrit dans le message de
news:
Bonjour,

*Tout* le code doit être écrit dans le module du formulaire. Il faut
déplacer la procédure SortirEtat du module global par un couper et la
coller dans le module du formulaire où sont écrites les autres
procédures. C'est cela qui provoquait l'erreur que tu as eue car dans un
module de portée global, le mot-clé Me n'est jamais reconnu car il ne
fait référence à aucun objet. Tu peux ensuite jeter le module global.

les prcédures suivantes:

Private Sub ListeEtats_DblClick(Cancel As Integer)'<-- appel la
procédure cmdVisualiser
cmdVisualiser_Click
End Sub

Private Sub cmdVisualiser_Click() '<-- Previsualisation par clic sur le
bouton cmdVisualiser
SortirEtat acPreview
End Sub

Private Sub cmdImprimer_Click() ' Imprime l'état sélectionné
SortirEtat acNormal
End Sub

Private Sub ListeEtats_DblClick(Cancel As Integer) & Private Sub
cmdVisualiser_Click() font la même chose : Appel de la procédure
SortirEtat pour s'assurer qu'un état est sélectionné puis, ici, le
prévisualise.
Private Sub cmdImprimer_Click() imprimme si un état est sélectionné.

Pourquoi 2 procédures pour faire le traitement ? Certains opérateurs
sont des Lucky Luke du clic souris donc souvent dble-clic sur la liste,
d'autres plus 'posés', sélectionnes l'état et ensuite clic sur le bouton
;-)


C'est plus clair ?


Merci pour tous ces conseils, j'ai, depuis quelques succès :
Le 1er exemple donné par walter Stucki fonctionne bien
(liste des états et dble clic dessus pour visualiser..)
J'ai des soucis sur la partie "faciliter la selection des états..., clic
sur


description."
C.AD avec les descriptions.
J'arrive à créer la function PeuplerlisteEtats qui fonctionnne bien et
charge la liste des descriptions à l'ouverture du formulaire
Mais après, je suis perdu.
J'ai créé un module pour placer le code de la fonction SortirEtat avec
Private Sub SortirEtat, etc...
et là : erreur de compilation à la ligne :
if isNull (Me!ListeEtats) then ' utilisation incorrecte du mot clé ME'
De plus que faire avec la 1ere procédure évènementielle :
Private Sub Liste Etats....
Sachant qu'il refuse cmdVisualiser_click ??
J'espére que vous pourrez vous y retrouver dans ces explications
couplées au


code fourni par le site indiqué.
Merci pour tout

Sylvere


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


Bonjour,

Si tu veux appliquer le même principe aux états, à savoir disposer d'une
liste affichant la description des états et pouvoir les voir en aperçu
ou les imprimer directement, Walter Stucky l'a fait pour toi ;-)

Ici : http://mypage.bluewin.ch/w.stucki/Etats.htm#ImpressionBatch


Merci pour toutes vos contributions,
Je vais mettre en oeuvre dès que possible et je vous tiens au courant.
Question subsidiaire :
derriere toutes ces requêtes, j'appelle aussi des états dépendant de
ces




requêtes,
peut on faire la même opération avec les états, si oui, quoi changer



dans le

code ?
Merci pour votre réponse.
Sylvere


--
A+
Eric
http://www.mpfa.info/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr








--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr