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

Macros et VBA Excel Discussion :

Remplir TextBox si un ComboBox change avec un tableau structuré


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut Remplir TextBox si un ComboBox change avec un tableau structuré
    Bonjour.

    J'ai ami qui est marchand ambulant, il vend des produits sur des marchés ouverts, il m'a demandé de lui faire une petite gestion des données sur Excel.

    J'ai découvert récemment les tableaux structurés.

    Après une recherche infructueuse sur internet et malgré ma bonne volonté je n'arrive pas à remplir un TextBox si un ComboBox change avec un tableau structuré.

    J'ai besoin d'aide pour écrire la syntaxe, je souhaite à partir du choix fait dans un ComboBox qui contient une liste de produit générée depuis un tableau structuré (Produits), afficher l'information associée dans un TextBox depuis le tableau (Produits – Prix de vente) .

    Merci d'avance pour votre petit coup de pouce et vos réponses.

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
      Me.ComboBox1.ColumnCount = [tableau1].Columns.Count
      Me.ComboBox1.ColumnWidths = "30;60;30"
      Me.ComboBox1.List = [tableau1].Value
    End Sub
     
    Private Sub ComboBox1_Click()
      Me.TextBox1 = Me.ComboBox1.Column(1)
      Me.TextBox2 = Me.ComboBox1.Column(2)
    End Sub

    Boisgontier
    Fichiers attachés Fichiers attachés
    • Type de fichier : xlsm TS.xlsm (21,2 Ko, 136 affichages)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonsoir.

    Merci pour votre réponse.

    J'ai quand même un petit souci, si je remplace dans le module Private Sub ComboBox1_Click() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Me.ComboBox1.ColumnCount = [tableau1].Columns.Count
      Me.ComboBox1.ColumnWidths = "30;60;30"
      Me.ComboBox1.List = [tableau1].Value
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox1.List = [tableau1[Libellé]].Value
    Ça bug.

    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox1 = Me.ComboBox1
    J'obtiens le libellé.

    En fait je souhaite lister dans le ComboBox que le libellé et dans le Textbox le prix.

    Quelle est la bonne syntaxe.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Pourquoi faire simple quand on peut faire compliqué!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
      Me.ComboBox1.List = [tableau1[libellé]].Value
    End Sub
     
    Private Sub ComboBox1_Click()
      p = Application.Match(Me.ComboBox1, [tableau1[libellé]], 0)
      Me.TextBox1 = Me.ComboBox1
      Me.TextBox2 = Application.Index([tableau1[prix]], p)
    End Sub
    Si on ne veut voir que le libellé dans le Combobox, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
      Me.ComboBox1.ColumnCount = [tableau1].Columns.Count
      Me.ComboBox1.ColumnWidths = "0;60;0"
      Me.ComboBox1.List = [tableau1].Value
    End Sub
    Private Sub ComboBox1_Click()
      Me.TextBox1 = Me.ComboBox1.Column(1)
      Me.TextBox2 = Me.ComboBox1.Column(2)
    End Sub

    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour.

    Effectivement pourquoi faire compliqué quand on peut faire simple !

    Voilà toute la différence entre un membre chevronné et un amateur Excel passionné.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonsoir,

    Finalement pour la petite gestion des données sur Excel pour mon ami qui est marchand ambulant, j'ai remis tout à plat et je suis reparti en me basant sur le principe du formulaire "FormSuivantPrecedent2 " de BOISGONTIER.

    Nom : Image FormSuivantPrecedent2(3).jpg
Affichages : 1238
Taille : 25,0 Ko

    Dont voici le module qui me pose un petit soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub B_ok_Click()
      Me.ListBox1.Clear
      i = 0
      Set plage = f.[A1].CurrentRegion
      Set c = plage.Find(Me.MotCle, , , xlPart)
      If Not c Is Nothing Then
        premier = c.Address
        Do
          Me.ListBox1.AddItem
          lig = c.Row
          Me.ListBox1.List(i, 0) = plage.Cells(lig, 1)
          Me.ListBox1.List(i, 1) = lig
          i = i + 1
          Set c = plage.FindNext(c)
         Loop While Not c Is Nothing And c.Address <> premier
       End If
       pointeur = 0
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
    Je n'arrive pas à comprendre pourquoi le nom du client DUPONT s'affiche 2 fois.

    Pourriez-vous me donner une petite explication svp.

    Merci d'avance pour votre aide.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Dans ce billet, je modélise les échanges entre un userform et un tableau structuré. Tu pourrais peut-être t'en inspirer


    De plus, abandonne la notation à crochets. J'explique pourquoi dans ce billet. C'est une horreur et une très mauvaise habitude que seuls certains "initiés" utilisent mais qui n'a que des désavantages et dont les aficionados n'ont jamais été foutus d'expliquer en quoi elle était intéressante. Elle te prive notamment de la saisie semi-automatique de code, la lecture du code ne te permet pas de savoir directement ce que tu manipules, puisque tu peux rencontrer ces crochets pour autre chose qu'une plage. Bref, les bonnes pratiques rejettent cette syntaxe et je n'ai jamais compris ce qui excitait tant les utilisateurs de ce truc.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [Toutes versions] remplir une combobox avec un tableau structurer dans un autre classeur
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 29/06/2019, 21h31
  2. [XL-2016] petit problème avec un tableau structuré
    Par chrisl0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/04/2017, 21h47
  3. [Débutant] Remplir textBox avec Combobox de la meme BD
    Par Youpsy dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/06/2012, 22h04
  4. [XL-2003] remplir textbox avec combobox
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/04/2012, 08h07
  5. [1.1]remplir un textbox de la form mère avec la form fille
    Par prem's dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/03/2007, 09h47

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