USF listbox et Combo

  • Initiateur de la discussion Initiateur de la discussion Lio
  • 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 !

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

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
 
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
 
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.
 
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. 🙂
 
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

- 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
4
Affichages
1 K
Réponses
4
Affichages
1 K
P
  • Question Question
Réponses
8
Affichages
2 K
PLOUC
P
Réponses
2
Affichages
1 K
bebere
B
F
  • Question Question
Réponses
4
Affichages
1 K
Francois
F
P
  • Question Question
Réponses
0
Affichages
842
Palemeilleur
P
B
Réponses
1
Affichages
2 K
bleu_azur
B
D
Réponses
5
Affichages
1 K
david
D
J
Réponses
0
Affichages
1 K
jeff10
J
Réponses
4
Affichages
1 K
P
Réponses
3
Affichages
2 K
Phil.Brrd
P
V
Réponses
9
Affichages
2 K
vince
V
V
Réponses
2
Affichages
1 K
D
  • Question Question
Réponses
3
Affichages
1 K
David
D
Retour