Filtre d'une table avec Access et VB

Résolu
philip.dang Messages postés 37 Statut Membre -  
amidfki Messages postés 13 Statut Membre -
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.

5 réponses

  1. synopsis8 Messages postés 1478 Statut Membre 243
     
    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
  2. philip.dang Messages postés 37 Statut Membre 1
     
    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
  3. blux Messages postés 5040 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
  4. philip.dang Messages postés 37 Statut Membre 1
     
    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
    1. blux Messages postés 5040 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Si ton bouton s'appelle Command11, alors tu dois avoir un affichage quand tu cliques dessus.
      0
    2. philip.dang Messages postés 37 Statut Membre 1
       
      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
    3. blux Messages postés 5040 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
    4. philip.dang Messages postés 37 Statut Membre 1
       
      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
    5. philip.dang Messages postés 37 Statut Membre 1
       
      Est-ce que cela vient des modules, classes de modules? ce sont des notions que je ne maitrise pas du tout.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amidfki Messages postés 13 Statut Membre
     
    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