TextBox versus Listbox

  • Initiateur de la discussion Initiateur de la discussion Temjeh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Temjeh

Guest
Bonjour le forum

Devant mes recherches infructueuse je demande votre aide
J'ai ce code qui alimente mon listbox:

Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets('Feuil1')
For i = 0 To 5
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = '40;40;40;40'
.AddItem WS.Range('A' & i + 1)
.Column(1, i) = WS.Range('B' & i + 1)
.Column(2, i) = WS.Range('C' & i + 1)
.Column(3, i) = WS.Range('D' & i + 1)
End With
Next
End Sub

J'ai un textbox en dessous de chaque colonne.
J'aimerais pour mes 4 col que quand je sélectionne la list les info aparaisse dans le textbox en dessous de leur colonne et qu'il sélective la premièreccell active de la ligne pour une modification futur.

Donc quand je sélectionne la 1ère ligne dans listbox :

TextBox1=1ère ligne 1ère colomn.value
TextBox2=1ère ligne 2ème colomn.value
TextBox3=1ère ligne 3ème colomn.value
TextBox4=1ère ligne 4ème colomn.value
range(listbox).select

Donc quand je sélectionne la 2ème ligne dans listbox :

TextBox1=2ème ligne 1ère colomn.value
TextBox2=2ème ligne 2ème colomn.value
TextBox3=2èmeligne 3ème colomn.value
TextBox4=2ème ligne 4ème colomn.value
range(list).select

Merci beaucoup

Temjeh
 
Bonjour

pour faire ce que tu demandes

Private Sub ListBox1_Click()
Me.TextBox1 = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
Me.TextBox2 = Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
Me.TextBox3 = Me.ListBox1.List(Me.ListBox1.ListIndex, 2)
Me.TextBox4 = Me.ListBox1.List(Me.ListBox1.ListIndex, 3)

End Sub


Sinon dans ton code

Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets('Feuil1')
For i = 0 To 5
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = '40;40;40;40'
.AddItem WS.Range('A' & i + 1)
.Column(1, i) = WS.Range('B' & i + 1)
.Column(2, i) = WS.Range('C' & i + 1)
.Column(3, i) = WS.Range('D' & i + 1)
End With
Next
End Sub

tu peux modifier car 4 fois tu lui redis de mettre 4 colonnes avec telle et telle dimensions

essaies

Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets('Feuil1')
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = '40;40;40;40'
For i = 0 To 5
.AddItem WS.Range('A' & i + 1)
.Column(1, i) = WS.Range('B' & i + 1)
.Column(2, i) = WS.Range('C' & i + 1)
.Column(3, i) = WS.Range('D' & i + 1)
End With
Next
End Sub

Bon courage
 
Oups Excuse Hervé je te marche sur les pieds

Bon en effet avec une boucle tu gagnes un peu si tu es sûr que tes textbox porteront ces noms

Voilà ce que c'est, je n'ai pas l'habitude car mes textbox ne portent pour ainsi dire jamais des numéros mais des noms par rapoort à leur fonction du style Txb_Nom et donc j'oublie de faire une boucle dans ce genre de cas

Bonne journée

Message édité par: Pascal76, à: 25/04/2005 11:42
 
Wow quel rapidité et c'est en plus la perfection!!!

Si tu a un idée pour la sélection de l'activecell de la ligne car sous un bouton je vais y mettre :

Range(Listbox1èreactivecell)=textbox1.value pour une correction de valeur.

J'ai ceci:

Range('A' & ListIndex + 1).Select mais il ne reconnais pas la ligne il sélectionne juste la A1

Merci infiniemment

Temjeh
 
Merci Hervé & Pascal pour le bombardement c'est parfait:

Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets('Feuil1')
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = '40;40;40;40'
For i = 0 To 5
.AddItem WS.Range('A' & i + 1)
.Column(1, i) = WS.Range('B' & i + 1)
.Column(2, i) = WS.Range('C' & i + 1)
.Column(3, i) = WS.Range('D' & i + 1)

Next
End With

End Sub

et

Me.TextBox1 = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
Me.TextBox2 = Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
Me.TextBox3 = Me.ListBox1.List(Me.ListBox1.ListIndex, 2)
Me.TextBox4 = Me.ListBox1.List(Me.ListBox1.ListIndex, 3)
Range('A' & ListBox1.ListIndex + 1).Select

Temjeh
 
re temjeh
salut pascal

bonne remarque pascal pour les noms des controles.

C'est vrai que je ne change jamais les noms des controls, et si je dois le faire j'utilise les tag pour pouvoir boucler dessus.

Sinon, temjeh, une autre synthaxe pour remplir une listbox sans boucle :

Private Sub UserForm_Initialize()
Dim tablo As Variant

tablo = ThisWorkbook.Worksheets('Feuil1').Range('a1:d6')

With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = '40;40;40;40'
.List = tablo
End With

End Sub

Salut

Message édité par: Hervé, à: 25/04/2005 11:56
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
863
Retour