Combobox et tables avec nom
Bonjour,
Dans un fichier, j'ai créé un userForm avec deux combobox. Le premier se réfère à une table dans laquelle j'ai listé les noms de différentes tables présentes dans une feuille nommée "Misc".
Je souhaiterai si cela est faisable de séklectionner dans le premier le nom d'une table et de lister dans le second la première column de la table correspondante.
J'ai essayé vainement.
Le code pour le premier combobox utilisé est :
Me.combobox1.List = Worksheets("Misc").Range("BDD[Noms]").Value
Name=combobox1.value
je stocke la valeur du combobox 1 dans une variable et souhaiterai utiliser cette variable (Name) pour retrouver la table, la sélectionner etl' utiliser dans le combobox2 comme. J'ai essayé aavec Vlookup ou comme ci-dessous mais j'ai toujours des erreurs.
Me.ComboBox2.list= Worksheets("Details").Range("Name[Aliments]").Value avec Name qui est la valeur du 1er combobox et le nom d'une table.
J'ai essayé avec listobject , mais je ne veux pas ouvrir la feuille car on est obligé d'utiiliser activesheet avec ListObject.
Si quelqu'un a une idée, j'en serai ravi d'échanger avec lui.
Merci d'avance
Bonjour,
Bonsoir,
.Range("BDD[Noms]") est une expression particulièrement bizarre. Si une plage est nommée on utilise le nom...
Me.combobox1.List = ...
Name=combobox1.value
Si ces deux lignes dans la même procédure (laquelle ?), je suis curieux d'en voir le résultat.
Name : mauvaise idée (toujours) d'utiliser des noms d'objets, de propriétés ou méthodes... VBA comme noms de variables.
.Range("Name[Aliments]") comme plus haut... quel résultat ?
Il apparaît à peu près certain qu'il y a quelques problèmes de syntaxe...
Cordialement.
C'est bon, j'ai trouvé. Merci à tous ceux qui m'ont poussé par leur non réponse et leur commentaires constructifs à chercher par moi-même la solution.
Pour les personnes que cela intéresse, j'ai procédé comme suit:
Dans une feuille, j'ai listé les noms des tables et fait correspondre une seconde colonne concernant les noms apparaissant dans le combobox1. Cette table est la table 1 dans ce qui suit
dans Private Sub UserForm_Initialize()
Combobox1.list=Worksheets("nom de feuille").Range("nom de la table1[Nom de la colonne]").Value
Dans Private Sub Combobox1_Change()
dim N, N1 as string
N = Combobox.Value 'Je récupère le nom choisi dans le combobox1
Sheets("Nom de feuille").Activate ['j'active la feuille contenant les différentes bases de données et je calcule K1 qui cherche en fonction de la valeur choisi, le nom de la table correspondante]
K1 = Application.WorksheetFunction.VLookup(N, Sheets("nom de feuille").Range("nom de la table"), 2, False) [K1 est égal au nom de la table correspondannt à la valeur choisie dans le combobox 2]
Me.Combobox2.List = ActiveSheet.ListObjects(K1).ListColumns(1).DataBodyRange.Value [Ici, je met dans le combobox2, la colonne 1 de la table K1]
Peut-être n'est-ce pas vraiment académique, mais cela fonctionne dans mon cas.
Ad augusta per angusta