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

IHM Discussion :

Alimenter une textbox à partir d'une combobox dans un sous formulaire


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut Alimenter une textbox à partir d'une combobox dans un sous formulaire
    Bonjour,

    Je progresse, mais j'imagine que cette question reste simple pour la plupart d'entre vous.
    J'ai un formulaire de saisie dans lequel j'ai inséré un sous-formulaire sous forme de feuille de données.

    Le premier champ ("Code") de mon sous-formulaire est une combobox avec une liste de deux colonnes qui prend sa source dans une table articles et qui montre le code et la description de chaque article du catalogue.
    La deuxième champ s'appelle simplement "Description Article".

    J'aimerais que quand mon utilisateur sélectionne une valeur avec la combobox du premier champ, la description de l'article s'affiche dans le deuxième champ.

    Ma combobox s'appelle "cboCodeArticle". J'ai bien essayé d'insérer le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cboCodeArticle_AfterUpdate()
     
    Dim cnc As New ADODB.Connection, rst As New ADODB.Recordset, strSQL As String
    Set cnc = CurrentProject.Connection
     
    strSQL = "SELECT DescFrancais FROM tbl_DescriptionsArticles WHERE tbl_DescriptionsArticles.[CodeArticle] = '" & Me.cboCodeArticle & "';"
    rst.Open strSQL, cnc, adOpenForwardOnly, adLockReadOnly
     
    Me.txtDescriptionArticle.Value = rst("DescFrancais")
     
    rst.Close
    Set cnc = Nothing
     
    End Sub
    Mais ça ne fonctionne pas évidemment. Est-ce que je dois insérer ce code dans mon sous formulaire? (je ne trouve pas mon contrôle dans la barre des déclarations...)

    Claude, si tu passes par là, je ne t'ai pas oublié. Mes excuses pour le retard.

  2. #2
    Membre actif
    Inscrit en
    Juin 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 150
    Points : 210
    Points
    210
    Par défaut
    Pour ce genre de problème, j'utilise une astuce: clic droit sur le contrôle de texte, le remplacer par une liste.

    Réduire graphiquement la liste pour qu'elle ressemble à une textBox.

    Le fait de remplacer par une liste fait apparaitre la propriété contenu dans laquelle tu peux coller ta requête.
    Résultat: du code vba en moins, et graphiquement rien n'a changé.

    Ca pourra peut-être t'aider...

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Ah oui, je n'y avais pas pensé. Merci.

    J'ai donc écrit ceci dans la source de ma combo "Description":

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT tbl_DescriptionsArticles.DescFrancais
    FROM tbl_DescriptionsArticles
    WHERE (((tbl_DescriptionsArticles.CodeArticle)=[Forms].[sfrm_BodyChangementDePrix].[cboCodeArticle]));

    Mais il ne se passe rien... :s

  4. #4
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Bonjour
    Si j'ai bien compris ca devrais donner cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cboCodeArticle_AfterUpdate()
    me.Description Article = me.cboCodeArticle.column(1)
    en sub
    Description article aura peut etre besoin de crochet [] evite les nom de champ qui ne se touche pas

  5. #5
    Membre actif
    Inscrit en
    Juin 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 150
    Points : 210
    Points
    210
    Par défaut
    et si tu le met dans contenu, et pas dans source.

    ah et aussi (y'avais quand même un peu de VBA) un petit Me.description.Requery dans lévènement after update de ta liste déroulante.

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Bonjour Renardo,

    C'est curieux, j'ai bien nommé ma première combo "cboCodeArticle" comme tu peux le voir sur le premier screenshot, mais je ne la trouve pas dans les déclarations de VBA (deuxième screenshot).

    J'ai essayé de coller ton code dans mon sous formulaire (c'est bien là qu'il faut que je le mette, non?) en ajoutant une msgbox pour voir si il se passait quelque chose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cboCodeArticle_AfterUpdate()
    Me.txtDescriptionArticle.Value = Me.cboCodeArticle.Column(1)
    MsgBox Me.cboCodeArticle.Column(1)
     
    End Sub
    Mais rien...

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par Merryvor Voir le message
    et si tu le met dans contenu, et pas dans source.

    ah et aussi (y'avais quand même un peu de VBA) un petit Me.description.Requery dans lévènement after update de ta liste déroulante.
    Pardon, j'ai écrit source, mais je voulais dire contenu.
    Par contre, pour le VBA, comme je l'explique plus haut, je n'arrive pas à déclarer mon événement cboCodeArticle_AfterUpdate... et je ne sais pas pourquoi.

  8. #8
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Regarde le nom qui est inscrit dans la proprieté de ta liste
    et tu fais en fonction de se nom

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Raah, j'ai oublié d'attacher les pièces jointes... j'ai bien nommé ma combo cboCodeArticle, mais je ne la vois pas dans mes déclarations...
    Images attachées Images attachées   

  10. #10
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Une petite demo

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Hmm bon là, je sèche...

    J'ai renommé mes contrôles, et je les vois désormais dans ma liste de déclarations...
    Je récapitule:

    - Je suis dans un sous formulaire sfrm_BodyChangement (je ne sais pas si ce point à son importance). Mon sous formulaire est affiché sous forme de feuille de données.
    - J'ai deux contrôles. Le premier s'appelle cboArticleCode (c'est une combobox). Le second s'appelle txtArticleDescription (c'est une zone de texte).
    - cboArticleCode a deux colonnes: CodeArticle - DescArticle
    - J'aimerais que quand mon utilisateur choisit un article dans la cboArticleCode, DescArticle se reporte dans txtArticleDescription.
    - Voilà le code que j'ai placé au niveau du sous-formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cboArticleCode_AfterUpdate()
    Me.txtArticleDescription = Me.cboArticleCode.Column(1)
    End Sub
    Mais rien ne se passe.

    J'ai essayé la méthode de Merryvor en changeant ma txtArticleDescription en combobox (renommée en cboArticleDescription).
    Puis, j'ai mis cette requête en contenu de cboArticleDescription:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT tbl_DescriptionsArticles.DescFrancais
    FROM tbl_DescriptionsArticles
    WHERE (((tbl_DescriptionsArticles.CodeArticle)=[Forms].[sfrm_BodyChangementDePrix].[cboArticleCode]));

    Et le code suivant dans mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Option Compare Database
    Private Sub cboArticleCode_AfterUpdate()
    Me.cboArticleDescription.Requery
    End Sub
    Et rien ne se passe...

  12. #12
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Hmm bon, il y a sûrement quelque chose qui m'échappe sur format Feuille de Données, puisque j'ai essayé de renommer mes contrôles cboArticleCode et txtArticleDescription avec le même nom que les champs de ma table "Source Contrôle", et la méthode de Renardo fonctionne désormais.
    Mon problème est donc réglé, mais je n'ai pas compris pourquoi

Discussions similaires

  1. [Débutant] rechercher des valeurs dans une datagrid à partir d'une textbox
    Par franklinw dans le forum C#
    Réponses: 6
    Dernier message: 09/10/2012, 17h30
  2. Compléter une cellule à partir d'une TextBox
    Par Le Marsu dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/08/2008, 22h48
  3. Charger une Textbox à partir d'un combobox lié à une table
    Par fomblardo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/03/2008, 13h24
  4. [VB6]Creer un autre TextBox à partir d'une Textbox Existante
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 18/01/2006, 08h20

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