Bonjour le forum
Bonjour noon
Voici les solutions de Thierry. Tu y trouveras vraisemblablement ce que tu recherches.
Sinon n'hésites pas en restant sur ce post ...
// 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
Bon week-end à toutes & à tous.
@ ++ Eric C