IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Dictionnaire et affichage de plusieurs enregistrements sur un formulaire [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut Dictionnaire et affichage de plusieurs enregistrements sur un formulaire
    Bonjour bonjour!!

    Je souhaiterais créer une sorte de dictionnaire personnalisé (1 table avec un champs "Mot" et un champ "Définition") avec soit une liste déroulante soit des boutons cliquables (des boutons quoi) pour sélectionner la première lettre des mots rechercher.
    Mon code ressemble à ça pour l'instant pour les lettres A et B:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub ListeDéroulante_BeforeUpdate(Cancel As Integer)
    'récupère la première lettre:
    PremièreLettre = Left(Mot, 1)
     
    If ListeDéroulante = "A" Then
    'quoi mettre?
    ElseIf ListeDéroulante = "B" Then
    'quoi mettre?
    Enf If
    End Sub
    Dans un premier temps, j'aimerais savoir comment en VBA sélectionner les enregistrements qui commence par la lettre A (ou autre) sans passer par une requête (= comme "a*") puisque cela impliquerais de créer autant de requêtes qu'il y a de lettres et de chiffres!!!
    Dans un second temps, j'aimerais savoir comment (toujours en VBA) afficher tous les mots sélectionnés suivant leur première lettre et leur définition dans le formulaire. Je pense qu'il faut passer par un formulaire continu(?)

    Merci à vous!!

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Bonsoir ou bonne nuit

    Si dans une première listeDéroulante tu choisis la lettre et dans AutreListe tu veux afficher les mots commençant par cette lettre et si ta table se nomme Dico:

    Tu peux essayer cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListeDéroulante_Click()
     
    Me.AutreListe.RowSource="Select Mot From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
     
    End Sub
    Et si à la place de AutreListe tu veux mettre à jour 1 sous-formulaire, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListeDéroulante_Click()
     
    Me.sousform.Form.RecordSource="Select Mot From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
     
    End Sub
    A+

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    Pour le moment, c'est encore un "Bonsoir"

    Hey merci beaucoup pour le tip bien que ce ne soit pas exactement ce que je veux, c'est pas mal du tout. En fait je souhaiterais que qd la première lettre est sélectionnée, ça m'affiche les mots qui commence par cette lettre ET leur définition. Un peu comme l'image de la section "3.3. L'écran de la gestion du stock" de ce tutoriel (je suis en train de le regarder justement^^): http://stephaneey.developpez.com/tut.../bibliotheque/

    Merci quand même!

    EDIT:
    En fait je trouve ton code assez excellent, du coup je cherche à afficher la définition dans une zone de texte comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub ListeDéroulante_Click()
    Me.Liste2.RowSource = " Select Mot From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
    Me.Refresh
    End Sub
     
    Private Sub Liste2_Click()
    Me.Texte14.RowSource = " Select Définition From Dico Where Définition like '" & Me.Liste2 & "*'"
    Me.Refresh
    End Sub
    Problèmes: - la seconde procédure événementielle bug; - j'aimerais que la Liste2 (la seconde zone déroulante) se mette à jour quand je choisisse une autre lettre mais apparement "Me.Refresh" ne marche pas avec les zone déroulante. Comment faire tous ça?

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Oui, le tuto c'est du très lourd

    Je veux juste te donner 2 ou 3 pistes pour t'aider:

    Dans 1 formulaire en en-tête de form,
    tu as une listeDéroulante qui contient une liste alphabétique (A,B,..Z)

    Dans la section détail de ce formulaire, tu as un sous-formulaire nommé "sousform" (affichage en mode continu), ce sous form à pour source la table "Dico" et 2 zones de textes Mot et Définition.

    Sur l'évènement clic de ta listeDéroulante tu mets ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListeDéroulante_Click()
     
    Me.sousform.Form.RecordSource="Select Mot, Définition From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
     
    End Sub

    Ce type de code est utilisé pour filtrer le sous-formulaire.

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Ré..ponse à ton message de 0h03:

    Si ta liste2 à 2 colonnes (propriété Nbre Colonnes = 2), alors tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListeDéroulante_Click()
    Me.Liste2.RowSource = " Select Mot, Définition From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
    End Sub
    Puis,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Liste2_Click()
    Me.Texte14.value = Me.Liste2.Column(1)
    End Sub
    A+

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    Merci Beaucoup ça marche impec' avec les listes

    Dernières petites choses:

    - dans la ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.Liste2.RowSource = " Select Mot, Définition From Dico Where Mot like '" & Me.ListeDéroulante & "*' "
    'OU
    Me.sousform.Form.RecordSource="Select Mot, Définition From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
    Pourquoi est on obligé d'ajouter des & entre Me.ListeDéroulante ??

    - la solution avec le sous-formulaire ne marche pas, c'est d'autant plus bizarre que access à l'air de me créer automatiquement une requête nommée "TmprryQryFrLnkFldsCrtn0123456789" qui fait fonctionner correctement le sous-formulaire. Le code SQL de cette requête est simplement: SELECT;
    Une idée de la source du problème (et de cette requête)?

    Merci encore

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Pourquoi est on obligé d'ajouter des & entre Me.ListeDéroulante ??
    Car le champ [Mot] est du texte, donc il faut dire à Access que le contenu de la liste déroulante est du texte en l'entourant de quotes (') du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "... where [Mot]='" & Me.ListeDéroulante & "*'"
    Tu peux donc avoir si la liste contient 'A':

    - la solution avec le sous-formulaire ne marche pas, c'est d'autant plus bizarre que access à l'air de me créer automatiquement une requête nommée "TmprryQryFrLnkFldsCrtn0123456789" qui fait fonctionner correctement le sous-formulaire. Le code SQL de cette requête est simplement: SELECT;
    Une idée de la source du problème (et de cette requête)?
    Le sous-formulaire (affichage mode continu ou feuille de données) doit avoir pour source la table "Dico" et 2 zones de texte Mot et Définition liées aux champs [Mot] et [Définition] de la table Dico.

    avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.sousform.Form.RecordSource="Select Mot, Définition From Dico Where Mot like '" & Me.ListeDéroulante & "*'"
    Me.sousform.Form.Requery
    Sinon tu as les cours de la rédaction sur la recherche par critères sur des formulaires.

    A+

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Points : 71
    Points
    71
    Par défaut
    Ok pour les: ' mais à propos des: & ?

    Y a t'il un moyen d'ajouter un nouveau Mot (et Définition) dans Liste2? Car l'Origine source des données est définie sur "Table/Requête", du coup ça n'enregistre pas les modifications que je peux faire

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Ouvres une nouvelle discussion car la liste ne concerne que l'affichage des données

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/05/2007, 23h41
  2. Affichage de plusieurs graphiques sur une même form
    Par redpulse dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/02/2007, 08h41
  3. Réponses: 6
    Dernier message: 23/01/2007, 11h08
  4. Plusieurs enregistrements sur 1 ligne Etat
    Par MSA38 dans le forum IHM
    Réponses: 3
    Dernier message: 05/12/2006, 14h31
  5. [Conception] probleme d'affichage de plusieurs enregistrements
    Par benoitinfrance dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/08/2006, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo