Value combo ou liste à plusieurs colonnes

F

Fanfan68

Guest
Bonjour à tous,

Pour les comboBoxs ou listBoxs, je sais qu'il y a dans les propriétés, une propriété 'BoundColumn' qui sert à définir quelle sera la colonne qui récupèrera la value dans le cas ou il y aurait plusieurs colonnes.

Ma question est la suivante :

Est-il possible de récupéré, sur click, pour les combo ou list à plusieurs colonnes, la valeur de chaque colonne, ex. en A1 la valeur de la première colonne, en A2, celle de la seconde, en A3, la troisième....

Merci
 

Hervé

XLDnaute Barbatruc
re

un peu plus d'explication :

La valeur d'une listbox en multicolonne est donnée par la propriété list.

ainsi la valeur à l'intersection de la 2ème ligne et de la 3ème colonne se trouve en faisant : listbox1.list(1,2) attention les items d'une listbox sont indexés en partant de 0 (premier item =0, deuxième =1, etc... d'ou le décalage)

l'item (la ligne) sélectionné dans une listbox est trouvé par listindex, ainsi ce code te donnera le numéro de l'index :

Private Sub ListBox1_Click()
MsgBox ListBox1.ListIndex
End Sub

Là aussi, attention au décalage de 1

le nombre de colonne d'une listbox est donnée par columncount.

il ne te reste plus ensuite qu'a faire une boucle :

for i=0 to .columncount-1 = pour i allant de 1 au total de colonne (-1 pour tenir compte du décalage de 1)

cells(i+1,1) dans la cellule a1=la valeur à l'intersection du numéro de ligne(listindex) et de la colonne (i)

voilà

j'espère avoir été clair.

salut

Message édité par: hervé, à: 14/11/2005 17:31
 
F

Fanfan68

Guest
Trés bien, super Hervé, ça fonctionne.

J'ai modifié un peu le code de la manière suivante :

Cells(1, i + 1)

Afin de remplir mon tableau de gauche à droite et non de haut en bas et ainsi, respecter la logique de ma listBox.

Maintenant, il y a un souci, en effet, si je re-click sur une ligne de ma list, les données précedement envoyées dans 'Cells(1, i + 1)' vont être écrasées suite à ce nouveau click.

Comment faire pour conserver les données et mettre les suivantes sur la ligne de dessous et ainsi de suite

Merci
 

Hervé

XLDnaute Barbatruc
bonjour fanfan

Il suffit de rechercher la premiere cellule vide de la colonne A :


Private Sub ListBox1_Click()
Dim i As Byte
Dim derligne As Integer
derligne = Range('a65536').End(xlUp).Row + 1
With ListBox1
       
For i = 0 To .ColumnCount - 1
                Cells(derligne, i + 1) = .List(.ListIndex, i)
       
Next i
End With
End Sub


salut
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 180
dernier inscrit
Vcr