Liste déroulante dans combox

S

Steffi

Guest
Bonjour,

Petit problème, suite au message de hannoun y'a 2 jours, je n'arrive pas à insérer la liste dans la combox de VBA, je n'ai pas la propriété LinkedCell, ni ListFillRange. Quelqu'un peut-il m'aider???
 
S

syl

Guest
Bonjour Steffi

Je te joint un texte explicatif de @+Thierry qui est éclairant sue ce problème. Il ne faut pas hésiter à aller voir dans les archives, il y a des trésors !
si tu ne trouves pas ton bonheur, regarde les démos de @+Thierry (son pack 1 et 2)
A+ syl
Auteur: @+Thierry (---.monaco377.com)
Date: 03-08-03 18:29

Salut DrefZone, le Forum

Arf...... Grace à nous tu utilises une colonne entière pour alimenter une ComboBox .... Non, enfin pas de moi ce coup là et je ne l'ai pas vu passer !! lol (fais voir le code que tu utilises ?)

Voici les trois méthodes connues pour alimenter une ComboBox de manière dynamique...

METHODE ADDITEM :
Description de l'aide :Ajoute un élément à la liste d'une zone de liste ou d'une liste modifiable à colonne unique. Ajoute une ligne à la liste d'une zone de liste ou d'une liste modifiable multicolonnes.

Exemple concret :
Private Sub UserForm_Initialize()
Dim i As Byte, x As Byte
i = Sheets("Database").Range("A65536").End(xlUp).Row
For x = 1 To i
With ComboBox1
.AddItem Sheets("Database").Range("A" & i)
End With
Next x
End Sub


METHODE ROWSOURCE : (attention Combobox de UserForm ONLY)
Description de l'aide : Spécifie la source de données fournissant une liste à un contrôle ComboBox ou ListBox.

Exemple concret :
Private Sub UserForm_Initialize()
Dim Plage As String
With Sheets("Database")
Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Address
End With
ComboBox1.RowSource = "Database!" & Plage
End Sub

NB : la méthode "RowSource" ci-dessus ne supporte pas des nom de feuille (onglet) avec des espaces et certains caractères spéciaux


METHODE LIST :
Description de l'aide : Renvoie ou définit la liste des entrées d'un contrôle ListBox ou ComboBox.

Exemple concret :
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Tab1() As String
With Sheets("Database")
Set Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
ReDim Tab1(1 To Plage.Count)
For Each Cell In Plage
i = i + 1
Tab1(i) = Cell
Next
ComboBox1.List = Tab1
End Sub

Voilà, ces trois méthodes feront le même résultat (à l'oeil nu) dans la l'initialisation du UserForm pour l'incrémentation de données dans ComboBox1

Maintenant pour en revenir à nos moutons, dans ton exemple, alors on peut alimenter une ComboBox d'une maniere fixe (non-dynamique) comme suit :

METHODE ADDITEM :
Private Sub UserForm_Initialize()
Dim i As Byte, x As Byte
For x = 5 To 15
With ComboBox1
.AddItem Sheets("Database").Range("A" & x)
End With
Next x
End Sub


METHODE ROWSOURCE : (Combobox de UserForm Only, sinon voir ListFillRange)
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Database!A5:A15"
End Sub

La Methode List semble un peu superflue pour ceci....

Bonne Fin de Journée
@+Thierry










Bonne Fin de Week End
@+Thierry
 

Discussions similaires

Réponses
8
Affichages
247

Statistiques des forums

Discussions
312 489
Messages
2 088 857
Membres
103 979
dernier inscrit
bderradji