Filtre d'une table avec Access et VB

Résolu/Fermé
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 - 2 août 2011 à 16:49
amidfki Messages postés 12 Date d'inscription mardi 13 novembre 2012 Statut Membre Dernière intervention 23 avril 2014 - 18 avril 2014 à 12:35
Bonjour,

Je suis débutant sur Access. (j'utilise Office 2007)
J'ai une table avec trois champs : identifiant_mot(autonumber), mot (text), occurence_mot(nombre d'apparition du mot : un nombre entier)

J'aimerais créer un programme? une requete? un rapport(form)? pour m'afficher la liste des mots dont l'occurence est comprise entre X et Y (qui sont des entiers variables).

De préférence, X et Y serait à choisir dans des combobox (choix préétabli de valeurs : 1/5/10/15/20/50/100/200/500).
A chaque actualisation de sélection des valeurs X et/ou Y. La feuille s'actualise et affiche le résultat.

Je crois que c'est assez simple à faire : le problème, c'est que je ne sais pas comment :(

De l'aide serait le bienvenu.

Merci d'avance pour vos réponses.




A voir également:

5 réponses

synopsis8 Messages postés 1364 Date d'inscription dimanche 15 mars 2009 Statut Membre Dernière intervention 1 juin 2013 243
2 août 2011 à 22:51
Bonjour philip,

Il s'agit d'une requête de ce type :
SELECT mot FROM [table] WHERE occurence_mot > X AND occurence_mot < Y


Il faut l'adapter selon le code SQL d'Access.
0
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 1
3 août 2011 à 09:53
Bonjour synopsis8,

Oui merci, mais en fait, j'aurais voulu savoir concrètement comment faire ceci sur Access. Comment attribuer une variable à une selection dans une combobox/listbox et à chaque évènement de sélection d'une valeur : afficher les résultats dans un rapport ou formulaire.
Ma question ne portait pas vraiment sur la syntaxe SQL mais sur la manière dont les différents élements code SQL /interface Access/code VB fonctionne ensemble.

En pratique, dans une combobox, comment fait-on pour déterminer les valeurs affichées dans la combobox et les lier à X et Y dans Access.

Merci d'avance
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
3 août 2011 à 10:28
Salut,

il te faut deux listes dans lesquelles tu choisiras tes valeurs, et un sous-formulaire qui affiche les résultats.

Ensuite, à chaque modification dans la liste (choix d'une valeur), tu iras 'rafraichir' ton sous-formulaire.

Pour attribuer une sélection d'un objet à une variable, tu fais : variable = nom_objet.value
Pour changer le source d'un sous-formulaire, tu fais nom_du_sous_formulaire.rowsource (ou .recordsource) = variable (dans variable, tu vas trouver une requête SQL que tu auras fabriquée avec les résultats de tes saisies.
0
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 1
4 août 2011 à 14:16
Bonjour et merci pour ta réponse,

j'ai réussi à afficher une liste de valeurs pré-choisies dans les combo_box : l'une pour choisir la valeur X, l'autre pour choisir la valeur Y.

Par contre, je n'arrive pas à : lancer un événement à partir du code. J'ai créé un événement qui fonctionne :

Même un simple (cfr code juste en dessous) ne fonctionne pas quand je clique sur le bouton.

Private Sub Command11_Click()

MsgBox "ok"

End Sub

J'imagine que c'est une faute de syntaxe ou un truc tout bête à cocher mais je ne sais pas quoi.

Merci de ton aide.
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
4 août 2011 à 14:23
Si ton bouton s'appelle Command11, alors tu dois avoir un affichage quand tu cliques dessus.
0
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 1
8 août 2011 à 11:40
Bonjour blux,

J'ai écrit la requete suivante :
SELECT [LISTE MOTS].[count_mots], [LISTE MOTS].[nom_mots]
FROM [LISTE MOTS]
WHERE [count_mots] BETWEEN count_min and count_max;

lorsque je la lance avec "RUN" dans le bandeau de Access. On me demande successivement de rentrer les valeurs de count_min et count_max.
Par contre, je n'arrive pas à relier count_min et count_max aux valeurs affichés dans les combobox.

Comment dois-je faire pour bien appeler : count_min = Combo11.value et count_max = combo12.value ?

Merci de ton aide
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
Modifié par blux le 8/08/2011 à 13:17
Il faut que tu crées ta requête avec du VBA qui sera appelé lorsque tu appuies sur un bouton, ensuite tu la mettras en source de ton sous-formulaire...

Dim StrSql as string 
StrSql = "SELECT [LISTE MOTS].[count_mots], [LISTE MOTS].[nom_mots] FROM [LISTE MOTS] 
WHERE [count_mots] BETWEEN " & combo11.value & " AND " + combo12.value 
sous_form.recordsource = StrSql
0
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 1
8 août 2011 à 16:27
Rebonjour,

Pour le code, c'est bon, j'ai bien compris la manière de s'y prendre. En gros : à chaque fois, on réécrit la requete selon la valeur des variables choisies et on la relance.

Par contre, je n'arrive toujours pas à faire fonctionner correctement la chose. :(

Ma requete "Query1" est :
SELECT LISTE.age, LISTE.Prénom
FROM LISTE
WHERE (((LISTE.age) Between 5 And 15))
ORDER BY LISTE.age, LISTE.Prénom;

(elle fonctionne quand je clique sur RUN)

je crée un bouton, je vais dans view code :
et j'écris :

Private Sub Command9_Click()

Dim StrSql As String
StrSql = "SELECT [LISTE MOTS].[count_mots], [LISTE MOTS].[nom_mots] FROM [LISTE MOTS] WHERE [count_mots] BETWEEN 1 AND 35;"
Query1.RecordSource = StrSql
DoCmd.OpenQuery "Query1"

End Sub

J'essaie de faire fonctioner en form view en cliquant sur Command9 : et Access me répond Object Required + Bug
Ou si je le fais fonctionner en cliquand sur le bouton lecture à partir du code : il y a une fenetre qui s'ouvre et qui me demande de selectionner une macro. (qui n'existe pas, puisque je n'en ai pas)

Merci pour ton aide et Bonne journée :)
0
philip.dang Messages postés 35 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 1 septembre 2011 1
8 août 2011 à 16:38
Est-ce que cela vient des modules, classes de modules? ce sont des notions que je ne maitrise pas du tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amidfki Messages postés 12 Date d'inscription mardi 13 novembre 2012 Statut Membre Dernière intervention 23 avril 2014
18 avril 2014 à 12:35
dim sql as string
sql="SELECT mot FROM [table] WHERE occurence_mot >' " & X & " 'AND occurence_mot <'" & Y & " ' "
me!(nom de sous-formulaire).form.recordsource=sql
me!(nom de sous-formulaire.requery
0