USF listbox et Combo

  • Initiateur de la discussion Lio
  • Date de début
L

Lio

Guest
Bonjour le forum,

Je ne vois pas quelle méthode appliquer pour traiter ma base de donnée ( un peu paticulière). En fait, il y a dans mes colonnes des infos qui se répètent. Ma question :
Quel code faut'il placer pour avoir dans la combobox1, une seule ligne de chaque ?

Dans la lisbox1, par contre je souhaiterais avoir toutes les données pour un même nom à partir de la colonne i jusqu'à l.

Merci pour vos réponses ou piste à explorer.

Salutations. Lio

[file name=Test_20060504180325.zip size=24982]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_20060504180325.zip[/file]
 

Pièces jointes

  • Test_20060504180325.zip
    24.4 KB · Affichages: 16

Hervé

XLDnaute Barbatruc
bonjour lio

je ne te fournis que les codes à mettre dans ton userform.


Private Sub ComboBox1_Click()
Dim c As Range

ListBox1.Clear
ListBox1.ColumnCount = 4

For Each c In WS.Range('a2:a' & WS.Range('a65536').End(xlUp).Row)
       
If c = ComboBox1 Then
               
With ListBox1
                        .AddItem Cells(c.Row, 'i')
                        .List(.ListCount - 1, 1) = Cells(c.Row, 'j')
                        .List(.ListCount - 1, 2) = Cells(c.Row, 'k')
                        .List(.ListCount - 1, 3) = Cells(c.Row, 'l')
               
End With
       
End If
Next c

Label7 = ListBox1.ListCount
End Sub
'_______________________________________
Private Sub UserForm_Initialize()
Dim X As Integer, i As Integer
Dim Y As Integer
Dim Match As Byte
Dim data As New Collection


Set WS = ThisWorkbook.Sheets('DataBase')
SortNom

On Error Resume Next
For X = 2 To L
data.Add WS.Cells(X, 1),
CStr(WS.Cells(X, 1)) 'ComboBox1.AddItem WS.Cells(X, 1)
Next X
On Error GoTo 0

For X = 1 To data.Count
        ComboBox1.AddItem data(X)
Next X

End Sub


salut
 
L

Lio

Guest
Salut Hervé,

Merci beaucoup pour ta réponse.

A priori, je ne comprends pas tout ( l'utilisation d'une nouvelle collection). Je regarde ce soir et revient te voir.

Merci encore.

Salutations.Lio
 

lio

XLDnaute Occasionnel
Re bonsoir,
En rouge, mes interogations.

Private Sub ComboBox1_Click()
Dim c As Range

ListBox1.Clear
ListBox1.ColumnCount = 4

For Each c In WS.Range('a2:a' & WS.Range('a65536').End(xlUp).Row)
If c = ComboBox1 Then
With ListBox1
'.List(.ListCount - 1, 0) = Cells(c.Row, 'i')Ne marche pas !
.AddItem Cells(c.Row, 'i')
.List(.ListCount - 1, 1) = Cells(c.Row, 'j')
'L'aide sur list :Renvoie ou définit la liste des entrées d'un contrôle ListBox ou ComboBox.
'Syntaxe
'object.List( row, column ) [= Variant]

'Aide sur ListCount = Renvoie le nombre d'entrées de liste d'un contrôle.'Je ne comprends pas malgrès l'aide

.List(.ListCount - 1, 2) = Cells(c.Row, 'k')
.List(.ListCount - 1, 3) = Cells(c.Row, 'l')
End With
End If
Next c

Label7 = ListBox1.ListCount
End Sub
'_______________________________________
Private Sub UserForm_Initialize()
Dim X As Integer, i As Integer
Dim Y As Integer
'Dim Match As Byte
Dim data As New Collection


Set WS = ThisWorkbook.Sheets('DataBase')
SortNom

On Error Resume Next
For X = 2 To L
data.Add WS.Cells(X, 1), CStr(WS.Cells(X, 1)) 'La non plus, no comprendo ! Pourquoi renvoyer une valeur à ce moment là puisque on la récupère 3 lignes plus bas.
Next X
On Error GoTo 0

For X = 1 To data.Count
ComboBox1.AddItem data(X)
Next X

End Sub

Merci beaucoup.
 

Hervé

XLDnaute Barbatruc
bonjour lio :)

reponses tardives, mais réponses tout de meme

For Each c In WS.Range('a2:a' & WS.Range('a65536').End(xlUp).Row)
If c = ComboBox1 Then
With ListBox1
'.List(.ListCount - 1, 0) = Cells(c.Row, 'i')Ne marche pas !
.AddItem Cells(c.Row, 'i')

si tu regardes mon code, tu verras que j'ai utilisé la méthode additem avant la méthode list.

dans une listbox en multicolonne, tu ne peux pas alimenter via une boucle les colonnes par la méthode list sans avoir au préalable rempli la premiere colonne par additem. (respire)

donc on remplit la premiere colonne de la listbox par additem : .AddItem Cells(c.Row, 'i')

puis les autres par la méthode list :.List(.ListCount - 1, 1) = Cells(c.Row, 'j')

voilà pour ta premiere interrogation, et le 'Ne marche pas'.

.List(.ListCount - 1, 2) = Cells(c.Row, 'k')

la méthode list, permet de lire ou d'ecrire dans une listbox à un endroit précis.

les lignes et colonnes sont indexées à partir de 0, la premiere colonne =0, la seconde=1, etc...

.list(ligne, colonne)
.list(0,0) va te renvoyer la valeur se trouvant sur la premiere ligne et la premiere colonne de ta listbox.

il nous faut donc incrementer les lignes lorsque l'on remplit la listbox, sinon on ecrit toujours sur la meme.

l'incrementation se fait grace à .listcount qui te donne le nombre de ligne que contient ta listbox.

voilà pour ton interrogation concernant list

la collection :

la collection est un tableau qui se rempli par la méthode add :

lacolletion.add element, clé

Une collection n'accepte pas de clé doublons sinon elle provoque une erreur.

on s'en sert donc pour lister des données sans doublons.

le on error resume next permet de préciser au code que la collection va buguer, mais de continuer quand meme le traitement.

le on error goto 0 permet de préciser qu'a partir de cette ligne le code doit nous renvoyer les erreurs rencontrées.

en somme on force le code à bugguer sur la ligne add et on gere ce bug sur le on error resume next.

ouf, voilà

j'espère que j'ai été assez pédagogique.

salut

PS : robert, tu vois que j'arrive à faire des longs posts. :)
 

lio

XLDnaute Occasionnel
Salut Hervé, le forum,

Je reviens sur ce post car j'ai d'énormes difficultés pour avancer dans mon bout de code magrés ton aide.

En fait, le but du fichier serait d'accélérer la création de devis. Malgrè les recherches que j'ai faite sur les 2 coffrets des listes, je ne trouve pas de soluce. A partir, de la sélection de la listbox, je souhaiterai mettre certaines données dans la feuille 'devis_Type'.Pour mettre l'adresse, OK, mais pour récupérer les données de la listbox, je galère. Je joins le fichier.
Merci pour votre aide.

[file name=Test_20060508175834.zip size=31051]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_20060508175834.zip[/file]
 

Pièces jointes

  • Test_20060508175834.zip
    30.3 KB · Affichages: 40

Discussions similaires

Réponses
4
Affichages
1 K
P
Réponses
8
Affichages
1 K
PLOUC
P
P
Réponses
0
Affichages
768
Palemeilleur
P
D
Réponses
5
Affichages
1 K
david
D
F
Réponses
4
Affichages
1 K
Francois
F
P
Réponses
3
Affichages
2 K
Phil.Brrd
P
J
Réponses
0
Affichages
1 K
jeff10
J

Statistiques des forums

Discussions
312 523
Messages
2 089 319
Membres
104 119
dernier inscrit
karbone57