Row source pour un combobox

  • Initiateur de la discussion delirium
  • Date de début
D

delirium

Guest
Bonjour à tous les XLien.

J'ai un nouveau problème sur un combobox dans un userform.

Je voudrais que le rowsource soit les données des cellule de ma feuille XL mais la liste peut se ralonger. Je voudrais donc que le rowsouce de mon combobox se mette à jours automatiquement.
J'ai fait ce code mais y'a un erreur.

Code:
Option Explicit
Dim derlign As Integer
Dim plagelist As String
Dim varselect As Integer

Private Sub UserForm_Initialize()
derlign = Sheets('feuil1').Range('a1').End(xlUp).Row
plagelist = Sheets('feuil1').Range('a1:a' & derlign).Address
With ComboBox1
.RowSource = 'feuil1!' & plagelist
.ListIndex = Range('b2').Value - 1
End With
End Sub

Private Sub ComboBox1_Change()
varselect = UserForm1.ComboBox1.ListIndex
Sheets('feuil1').Range('b2').Value = ComboBox1.ListIndex + 1
End Sub

Vous trouverais mon fichier en pièce jointe pour mieux comprendre.

Je voudrais savoir également si il est possible de mettre en rowsource des cellules d'un autre classeur, et si oui comment faire ?

Merci et @+ [file name=RowSouce.zip size=11972]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RowSouce.zip[/file]
 

Pièces jointes

  • RowSouce.zip
    11.7 KB · Affichages: 97

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Délirium, bonjour Thomas

Voici les 4 méthodes préconisées par notre ami Thierry (que je salue au passage) à ...disons... ses débuts (il a tjrs été très pédagogique)

Je vous donne 4 méthodes pour remplir cette ComboBox (en fonction de votre besoin)
La propriété (name) du contrôle ComboBox est cboComboBox
Méthode 1 : Les données sont dans une feuille de calcul (Feuil1).
Private Sub UserForm_Initialize()
Me.cboComboBox.RowSource = 'Feuil1!A1:A' & Sheets('Feuil1').Cells(1, 1).End(xlDown).Row
End Sub

Méthode 2 : Les données sont figées et vous les ajoutez grâce à la méthode AddItem.
Private Sub UserForm_Initialize()
With Me.cboComboBox
cboComboBox.AddItem 'Domaine Alexis Rouge'
cboComboBox.AddItem 'Domaine du Grand Crès Blanc'
cboComboBox.AddItem 'Domaine du Grand Crès Muscat'
cboComboBox.AddItem 'Domaine du Grand Crès Rosé'
cboComboBox.AddItem 'Domaine du Grand Crès Rouge'
End With
End Sub
Méthode 3 : Les données correspondent à la liste des mois (Janvier, Février, ..., Décembre).
On va utiliser la méthode AddItem avec une variable (i).
Private Sub UserForm_Initialize()
Dim Mois(1 To 12) As String
Dim i As Integer
' Création d'un tableau des noms de mois
For i = 1 To 12
Mois(i) = Format(DateSerial(1, i, 1), 'mmmm')
Me.cboComboBox.AddItem Mois(i)
Next i
End Sub

Méthode 4 : Les données sont figées et vous les ajouter grâce _
à la fonction VBA.Array(arglist).
Private Sub UserForm_Initialize()
Dim vaDepartment As Variant
Dim stDeptList() As String
Dim i As Integer
vaDepartement = VBA.Array('Ain', 'Aisne', 'Allier','Alpes-de-Hte-Provence', _
'Alpes-Hautes', 'Alpes-Maritimes', 'Ardennes')
ReDim stDeptList (0 To UBound(vaDepartement))
For i = 0 To UBound(vaDepartement)
stDeptList(i) = vaDepartement(i)
Next i
cboCombobox.List = stDeptList
End Sub

En espérant t'avoir été utile ;)
N.B : la 1ère méthode est une variante de la méthode que tu as mis en ligne et c'est celle qui apparemment t'intéresse (RowSource). J'ai laissé les autres afin que tu te fasses une idées des autres possibilités (Ex Additem lorsque tu n'as pas beaucoup de valeurs à gérer....) ;)
 

Discussions similaires

Réponses
12
Affichages
309

Statistiques des forums

Discussions
313 059
Messages
2 094 887
Membres
106 115
dernier inscrit
bruno lemaire