Bonjour,
Je viens de tester votre code.
Si ActiveX ComboBox et le tableau structuré se trouvent sur la même feuille ça fonctionne parfaitement.
C'est évidemment normal parce-que dans le code que j'ai publié dans la 2ème partie de ma réponse (EDIT)l, j'ai intégré le contrôle ActiveX nommé ComboBox1 et le ListObject nommé T_TimeSheet dans un bloc With...End With qui faisait référence à la feuille nommée TimeSheet donc évidemment que dans ce code le contrôle ComboBox ET l'objet ListObject DOIVENT être dans la même feuille
Mais si vous spécifiez la feuille comme "parent" du contrôle ActiveX et que vous utilisez Range("Nom de la table").ListObject cela fonctionnera car pour cette dernière, c'est Excel qui reliera la feuille à la table (du classeur actif, je précise).
[EDIT]
Les objets
Le contrôle ActiveX se nomme ComboBox1 et se trouve dans la feuille nommée Consultation (propriété CodeName : shtConsult)
Les données se trouvent dans une table structurée nommée T_Stock se trouvant dans la feuille nommée Stock (propriété CodeName : shtStock)
Les données et le contrôle ActiveX se trouvent dans le même classeur et il est le classeur actif
Exemple avec le code dans le module de la feuille où se trouve le contrôle ActiveX
1 2 3 4
| Dim Rng As Range
Set Rng = shtStock.Range("T_Test")
Me.ComboBox1.ListFillRange = Rng.Address(External:=True)
Set Rng = Nothing |
D"autres syntaxes possibles pour la ligne 2
Set Rng = Worksheets("Stock").Range("T_Test")
Set Rng = Worksheets("Stock").ListObjects("T_Test").DataBodyRange
Exemple avec le code dans un module standard
shtConsult.ComboBox1.ListFillRange = Range("T_Test").Address(External:=True)
ou
1 2 3 4 5 6
| Dim sht As Worksheet
Dim cb As Object
Set sht = ThisWorkbook.Worksheets("Consultation")
Set cb = sht.OLEObjects("ComboBox1")
cb.ListFillRange = Range("T_Test").Address(External:=True)
Set sht = Nothing: Set cb = Nothing |
Il y a d'autres syntaxes possibles
Partager