Bonsoir David, le Forum
Pour "Figurer" un peu voici un cas de figure :
1 classeur avec X Feuilles dont dont l'onglet est nommé "Database" et où les données à reporter dans ta ComboBox se situe en colonne "A"... à partier de la cellule "A2" (A1 étant l'entête) jusqu'en "Ax" (on ne sait pas où cele s'arrête)
Voici Trois Méthodes Possibles, pour Alimenter dynamiquement une ComboBox ou une ListBox : (il n'y en a pas d'autre à ma connaissance)
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 = 2 To i
With ComboBox1
.AddItem Sheets("Database").Range("A" & i)
End With
Next x
End Sub
METHODE ROWSOURCE :
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("A2: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("A2: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
Donc il suffit de bien préciser dans chacune de ces méthodes quel est le nom d'onglet de feuille ("Database"), c'est pas bien compliqué.
Bon Travail et bon Courage David
@+Thierry