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