Pour alimenter une combobox ou une listbox dans un userform, il existe différentes méthodes
Tous les codes mentionnés ici doivent se situer dans le code de l'userform concerné
1 - 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 :
2 -METHODE ROWSOURCE : (attention Combobox de UserForm SEULEMENT) (Attention ne fonctionne pas sous MAC)
Description de l'aide : Spécifie la source de données fournissant une liste à un contrôle ComboBox ou ListBox.
Exemple concret :
NB : la méthode "RowSource" ci-dessus ne supporte pas des noms de feuille (onglet) avec des espaces et certains caractères spéciaux.
La méthode RowSource, est donnée à titre indicatif. Bien qu'elle soit disponible pour les comboBox et ListBox dans le cadre d'UserForm, elle peut générer des bug dans le déroulement des programmes. En particulier lorsqu'on rend dynamique les plages de cellules concernées par la liste.
3 - METHODE LIST :
Description de l'aide : Renvoie ou définit la liste des entrées d'un contrôle ListBox ou ComboBox.
Exemple concret :
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.
Les méthodes et exemples donnés fonctionnent également pour les listbox.
__________________________________________________________________
Tous ces exemples et ces explications proviennent de _Thierry et de Spitnolan08
Tous les codes mentionnés ici doivent se situer dans le code de l'userform concerné
1 - 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 :
Code:
Private Sub UserForm_Initialize()
'si la dernière ligne est supérieure à 256 déclarer i et x en Integer
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" & x)
End With
Next x
End Sub
Description de l'aide : Spécifie la source de données fournissant une liste à un contrôle ComboBox ou ListBox.
Exemple concret :
Code:
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
La méthode RowSource, est donnée à titre indicatif. Bien qu'elle soit disponible pour les comboBox et ListBox dans le cadre d'UserForm, elle peut générer des bug dans le déroulement des programmes. En particulier lorsqu'on rend dynamique les plages de cellules concernées par la liste.
3 - METHODE LIST :
Description de l'aide : Renvoie ou définit la liste des entrées d'un contrôle ListBox ou ComboBox.
Exemple concret :
Code:
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
Code:
Private Sub UserForm_Initialize()
Dim Plage As Range
With Sheets("Database")
Set Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
ComboBox1.List = Plage.Value
End Sub
Code:
Private Sub UserForm_Initialize()
Dim Tab1() As Variant
With Sheets("Database")
Tab1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
End With
ComboBox1.List = Tab1
End Sub
Code:
Private Sub UserForm_Initialize()
With Sheets("Database")
ComboBox1.List = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
End With
End Sub
Les méthodes et exemples donnés fonctionnent également pour les listbox.
__________________________________________________________________
Tous ces exemples et ces explications proviennent de _Thierry et de Spitnolan08
Dernière modification par un modérateur: