XL 2013 Affecter une plage dans une autre feuille à une Combobox

louloubru

XLDnaute Junior
Bonjour,

il y a déjà beaucoup de choses sur le sujet des combobox qui m'ont d'ailleurs permis d'avancer mais je suis bloquée sur un élément très bête :

Je souhaiterais affecter une plage de cellules nommées à ma combobox pour en faire une liste déroulante.

VB:
Private Sub UserForm_Initialize()
    Cat.RowSource = Range("cat_évènement").Address
End Sub
"cat_évènement" étant le nom de ma plage. Cela fonctionne très bien si la plage en question se trouve sur la même feuille mais mes données sont dans une autre feuille. Ce qui fait qu'il me renvoie les données correspondant à cette "Adress" se trouvant dans la feuille active, ce qui n'est pas ce que je veux.

J'ai essayé d'ajouter Sheets("Nom de la feuille où se trouvent mes données"). devant le Range sans succès. (logique puisque cela renvoie toujours l'adresse ...). Comment lui préciser la feuille ?

En vous remerciant par avance !
 

ChTi160

XLDnaute Barbatruc
Bonjour louloubru
Peut être comme ceux ci !

VB:
Private Sub UserForm_Initialize()
With Worksheets("Feuil1") 'Feuille Cible
Derlgn = .Cells(.Rows.Count, 1).End(xlUp).Row
Dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column
  Tablo = .Range(.Cells(1, 1), .Cells(DerLgn, DerCol)).Value
End With
     Me.ComboBox1.List = Tablo
End Sub
Pas évident sans fichier !
jean marie
 

louloubru

XLDnaute Junior
Bonjour,
merci pour cette réponse mais euh ... Je ne comprends rien ;)

L'idée est d'utiliser le nom de la plage que j'ai nommée via le gestionnaire de nom d'excel.
J'ai l'impression que ta proposition n'utilise pas le nom en question ("cat_évènement").
Le code :
VB:
Private Sub UserForm_Initialize()
    Cat.RowSource = Range("cat_évènement").Address
End Sub
Cela fonctionne très bien si ma plage nommée (cat_évènement") se trouve dans la même feuille que celle où apparaît mon User form. Mais elle est dans une autre feuille ("Validation")

Le fichier est assez gros avec plein de choses dans tous les sens, je pense que ce serait compliqué de s'y retrouver donc je ne l'ai pas joint.
 

louloubru

XLDnaute Junior
Bonjour,
pour info j'ai fini par trouver : il fallait tout simplement écrire :

VB:
Private Sub UserForm_Initialize()
    Cat.RowSource = "cat_évènement"
End Sub
Bonne journée !
 

Discussions similaires


Haut Bas