Histoire de replissage de combobox

  • Initiateur de la discussion David Jonc.
  • Date de début
D

David Jonc.

Guest
Bonjour a tous,

voila, je me heurte a un probleme, j'ai rempli un combobox a partr des cellules d'une feuille de calcul, mais le procleme est que je prend une plage de A1 a D6, et ce que je veux dans ma combo box n'est pas de A1 a A6, mais de B1 a B6.
Si je modifie ma plage en mettant B1 a D6, c'est ok, mais je ne peux plus acceder a mes données situées en A1:A6 pour les afficher dans un textbox.

Comment pourrai je faire, sachant que je suis parti d'un bout de code de ce site.

Private Sub ComboBox1_Change()
Me.TextBox1 = Me.ComboBox1.Column(1, Me.ComboBox1.ListIndex)

End Sub

Private Sub UserForm_Initialize()
MsgBox "userform initialize"

Dim Plage As String

With Sheets("Feuil1")
Plage = .Range("A1:D" & .Range("D65536").End(xlUp).Row).Address
End With

With Me.ComboBox1
.ColumnCount = 1
.ColumnWidths = "100;0"
.RowSource = "Feuil1!" & Plage
End With

End Sub

J'ai bien essayé de changer quelque chose da,s la propriété rowsource, mais rien n'y fait. Est ce que quelqu'un aurait une idée?

Merci beaucoup
 
A

arnaud

Guest
salut ;),

bon j'ai pas repri le code mais bon ça marche quand même ;)

Private Sub UserForm_Initialize()
For i = 1 To 6
If ActiveWorkbook.ActiveSheet.Range("b" & i).Value <> "" Then ComboBox1.AddItem ActiveWorkbook.ActiveSheet.Range("b" & i).Value
Next i
End With
 
@

@+Thierry

Guest
Bonjour David, Arnaud, le Forum

Non Arnaud je pense avoir compris que David veut pouvoir accéder à ses 3 colonnes da,s la Combobx, tout en affichant qu'une colonne.

Je propose une toute petite modif du code comme ceci :
Private Sub ComboBox1_Change()
Me.TextBox1 = Me.ComboBox1.Column(1, Me.ComboBox1.ListIndex)

End Sub

Private Sub UserForm_Initialize()
MsgBox "userform initialize"

Dim Plage As String

With Sheets("Feuil1")
Plage = .Range("A1:D" & .Range("D65536").End(xlUp).Row).Address
End With

With Me.ComboBox1
.ColumnCount = 3
.ColumnWidths = "0;100;0"
.RowSource = "Feuil1!" & Plage
End With

End Sub

Ensuite pour accéder aux données de la colonne 1, il suffira de faire :
Textbox1 = ComboBox1.Column(0, ComboBox1.ListIndex)

Bonne journée
@+Thierry
 
C

CHti160

Guest
Salut "David Jonc.et arnaud"
et Salut Thierry j'allais poster alors que Thierry avait repondu

Bonjour le "FORUM"
peut etre une solution tu affiches 2 colonnes dans ta combo tu selectionnes dans B et tu affiche A dans le textbox
Private Sub ComboBox1_Change()
Me.TextBox1 = Me.ComboBox1.Column(0, Me.ComboBox1.ListIndex)
End Sub

Private Sub UserForm_Initialize()
MsgBox "userform initialize"

Dim Plage As String

With Sheets("Feuil1")
Plage = .Range("A1:D" & .Range("D65536").End(xlUp).Row).Address
End With

With Me.ComboBox1
.ColumnCount = 2
.ColumnWidths = "50"
.RowSource = "Feuil1!" & Plage
.TextColumn = 2
End With
End Sub
A+++
Jean Marie
 

Statistiques des forums

Discussions
314 210
Messages
2 107 301
Membres
109 798
dernier inscrit
NAJI2005