OVH Cloud OVH Cloud

Pour Raymond : requête Access par VBA

9 réponses
Avatar
Mohamed
Bonjour Raymond,

J´ai consulté ta page web concernant les requêtes Access par VBA.
En voici l´adresse URL :
http://access.seneque.free.fr/requetes_vba.htm

Ce qui m´intéresse, c´est la partie "requêtes selection avec paramètres".
Le problème c´est que ton exemple affiche les résultats de la requête un par
un
et sous forme de boite d´alerte.

Moi, ce que je voudrais faire, c´est d´afficher l´ensemble des résultats de la
requête dans une ListBox.
Comment fait-on?

Merci d´avance.

9 réponses

Avatar
Raymond [mvp]
Bonjour.

Tu peux faire:

Dim Qry As DAO.QueryDef
Dim Rs As DAO.Recordset
Set Qry = CurrentDb.QueryDefs("Requête1")
Qry.Parameters("Date ?") = #4/16/2004# ' ou une variable
Qry.Parameters("Montant") = 700# ' ou une variable
Set Rs = Qry.OpenRecordset
Me.Maliste.Rowsource = ""
While Not Rs.EOF
Me.Maliste.Rowsource = Me.Maliste.Rowsource & Rs(0) & ";"
Rs.MoveNext
Wend
Set Qry = Nothing
Set Rs = Nothing

pour ton info, ne passe jamais de messages personnels car si je ne suis pas
là tu n'auras jamais de réponse. Tous les contributeurs présents sont
compétents et capables de te renseigner sur des fonctions de ce genre.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Bonjour Raymond,

J´ai consulté ta page web concernant les requêtes Access par VBA.
En voici l´adresse URL :
http://access.seneque.free.fr/requetes_vba.htm

Ce qui m´intéresse, c´est la partie "requêtes selection avec paramètres".
Le problème c´est que ton exemple affiche les résultats de la requête un
par

un
et sous forme de boite d´alerte.

Moi, ce que je voudrais faire, c´est d´afficher l´ensemble des résultats
de la

requête dans une ListBox.
Comment fait-on?

Merci d´avance.




Avatar
Mohamed
Merci pour l´info. Ca marche...
Mais vu que c´était sur ton site, il m´a semblé utile de t´adresser un
message personnalisé mais la prochaine fois, je le saurai.

Dis-moi j´ai encore une petite demande.
En fait, j´ai deux ListBox Liste1 et Liste2 et un bouton B.
"Liste 1" contient les résultats d´une requête et "Liste 2" est vide.

On sélectionne un ou plusieurs items de la ListBox Liste1. Et en cliquant
sur le bouton B, je voudrais que les items sélectionnés de la ListBox Liste1
se retrouvent
dans la ListBox Liste2.
Voici le code que j´ai testé mais cela n´a pas marché :

Private Sub valider_Click()


Dim liste1 As MSForms.ListBox
Dim liste2 As MSForms.ListBox
Dim k As Single

For k = 0 To (liste1.ListCount - 1)
If liste1.Selected(k) = True Then
With liste2
.AddItem liste1.List(k)
End With
End If

Next k

End Sub


Encore merci.




Bonjour.

Tu peux faire:

Dim Qry As DAO.QueryDef
Dim Rs As DAO.Recordset
Set Qry = CurrentDb.QueryDefs("Requête1")
Qry.Parameters("Date ?") = #4/16/2004# ' ou une variable
Qry.Parameters("Montant") = 700# ' ou une variable
Set Rs = Qry.OpenRecordset
Me.Maliste.Rowsource = ""
While Not Rs.EOF
Me.Maliste.Rowsource = Me.Maliste.Rowsource & Rs(0) & ";"
Rs.MoveNext
Wend
Set Qry = Nothing
Set Rs = Nothing

pour ton info, ne passe jamais de messages personnels car si je ne suis pas
là tu n'auras jamais de réponse. Tous les contributeurs présents sont
compétents et capables de te renseigner sur des fonctions de ce genre.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Bonjour Raymond,

J´ai consulté ta page web concernant les requêtes Access par VBA.
En voici l´adresse URL :
http://access.seneque.free.fr/requetes_vba.htm

Ce qui m´intéresse, c´est la partie "requêtes selection avec paramètres".
Le problème c´est que ton exemple affiche les résultats de la requête un
par

un
et sous forme de boite d´alerte.

Moi, ce que je voudrais faire, c´est d´afficher l´ensemble des résultats
de la

requête dans une ListBox.
Comment fait-on?

Merci d´avance.









Avatar
Raymond [mvp]
Tu peux faire ainsi:

Private Sub Liste1_AfterUpdate()
Dim var As Variant
Me.Liste2.RowSource = ""
For Each var In Me.Liste1.ItemsSelected
Me.Liste2.RowSource = Me.Liste2.RowSource & Me.Liste1.ItemData(var)
& ";"
Me.Liste2.Requery
Next
End Sub

sans utiliser le bouton.
AddItem étant supporté à partir de 2002 seulement, il est préférable de
passer par le rowsource directement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Merci pour l´info. Ca marche...
Mais vu que c´était sur ton site, il m´a semblé utile de t´adresser un
message personnalisé mais la prochaine fois, je le saurai.

Dis-moi j´ai encore une petite demande.
En fait, j´ai deux ListBox Liste1 et Liste2 et un bouton B.
"Liste 1" contient les résultats d´une requête et "Liste 2" est vide.

On sélectionne un ou plusieurs items de la ListBox Liste1. Et en cliquant
sur le bouton B, je voudrais que les items sélectionnés de la ListBox
Liste1

se retrouvent
dans la ListBox Liste2.
Voici le code que j´ai testé mais cela n´a pas marché :

Private Sub valider_Click()


Dim liste1 As MSForms.ListBox
Dim liste2 As MSForms.ListBox
Dim k As Single

For k = 0 To (liste1.ListCount - 1)
If liste1.Selected(k) = True Then
With liste2
.AddItem liste1.List(k)
End With
End If

Next k

End Sub


Encore merci.


Avatar
Raymond [mvp]
.../...
petite erreur :
Private Sub Liste1_AfterUpdate()
Dim var As Variant
Me.Liste2.RowSource = ""
For Each var In Me.Liste1.ItemsSelected
Me.Liste2.RowSource = Me.Liste2.RowSource & Me.Liste1.ItemData(var)
& ";"
Next
Me.Liste2.Requery
End Sub

le requery se faisait à chaque sélection ( si tu veux faire clignoter tu
peux le garder).
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news:
Tu peux faire ainsi:

Private Sub Liste1_AfterUpdate()
Dim var As Variant
Me.Liste2.RowSource = ""
For Each var In Me.Liste1.ItemsSelected
Me.Liste2.RowSource = Me.Liste2.RowSource &
Me.Liste1.ItemData(var)

& ";"
Me.Liste2.Requery
Next
End Sub

sans utiliser le bouton.
AddItem étant supporté à partir de 2002 seulement, il est préférable de
passer par le rowsource directement.


Avatar
Mohamed
Oui Raymond j´ai essayé avec ta nouvelle version
et encore une fois, cela ne marche pas...
Quand je clique sur un item de la première liste, je ne le vois pas apparaître
dans la deuxième liste.

Est-ce normal?





..../...
petite erreur :
Private Sub Liste1_AfterUpdate()
Dim var As Variant
Me.Liste2.RowSource = ""
For Each var In Me.Liste1.ItemsSelected
Me.Liste2.RowSource = Me.Liste2.RowSource & Me.Liste1.ItemData(var)
& ";"
Next
Me.Liste2.Requery
End Sub

le requery se faisait à chaque sélection ( si tu veux faire clignoter tu
peux le garder).
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news:
Tu peux faire ainsi:

Private Sub Liste1_AfterUpdate()
Dim var As Variant
Me.Liste2.RowSource = ""
For Each var In Me.Liste1.ItemsSelected
Me.Liste2.RowSource = Me.Liste2.RowSource &
Me.Liste1.ItemData(var)

& ";"
Me.Liste2.Requery
Next
End Sub

sans utiliser le bouton.
AddItem étant supporté à partir de 2002 seulement, il est préférable de
passer par le rowsource directement.







Avatar
Raymond [mvp]
as-tu bien mis les bons noms de contrôles ?
as-tu vérifié que dans la propriété après maj de la liste 1 , il y a bien
marqué [procédure événementielle] ?
si la fonction ne marche pas, il devrait y avoir une erreur affichée .
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Oui Raymond j´ai essayé avec ta nouvelle version
et encore une fois, cela ne marche pas...
Quand je clique sur un item de la première liste, je ne le vois pas
apparaître

dans la deuxième liste.

Est-ce normal?


Avatar
Mohamed
Oui j´ai encore essayé j´ai tout verifié mais cela ne marche pas
c´est peut etre la version d´Access 97 qui est révolue.
Quoi qu´il en soit, la fonction marche, vu qu´il n´y a pas de message
d´erreur.


as-tu bien mis les bons noms de contrôles ?
as-tu vérifié que dans la propriété après maj de la liste 1 , il y a bien
marqué [procédure événementielle] ?
si la fonction ne marche pas, il devrait y avoir une erreur affichée .
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Oui Raymond j´ai essayé avec ta nouvelle version
et encore une fois, cela ne marche pas...
Quand je clique sur un item de la première liste, je ne le vois pas
apparaître

dans la deuxième liste.

Est-ce normal?








Avatar
Raymond [mvp]
ce n'est pas la version 97 qui est en cause. Si tu n'y arrive pas , envoie
moi ton formulaire avec les tables et requêtes pour qu'il fonctionne, en
fichier zip , par mail en enlevant XYZ. dans mon adresse. je jetterai un
oeil.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Mohamed" a écrit dans le message de
news:
Oui j´ai encore essayé j´ai tout verifié mais cela ne marche pas
c´est peut etre la version d´Access 97 qui est révolue.
Quoi qu´il en soit, la fonction marche, vu qu´il n´y a pas de message
d´erreur.


Avatar
Raymond [mvp]
Réponse donnée par mail:

Pour la liste listeAusPos (liste n° 2):
Propriétés, onglet données / ligne origine source
Indiquer : Liste valeurs au lieu de Table/requête

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum



"Raymond [mvp]" a écrit dans le message de
news:%
ce n'est pas la version 97 qui est en cause. Si tu n'y arrive pas , envoie
moi ton formulaire avec les tables et requêtes pour qu'il fonctionne, en
fichier zip , par mail en enlevant XYZ. dans mon adresse. je jetterai un
oeil.