Private Sub UserForm_Initialize()
Dim Cel As Range 'décalre la variable Cel
'remplissage de la ComboBox1
'boucle sur toutes les cellules éditées de la colonne A (en partant de A2)
For Each Cel In Range('A2:A' & Range('A65536').End(xlUp).Row)
ComboBox1.AddItem Cel.Value
Next Cel
End Sub
Cordialement, [file name=mDF_ComboDynamique.zip size=11277]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mDF_ComboDynamique.zip[/file]Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
With ComboBox1
If .Text <> '' And .ListIndex < 0 Then
.AddItem .Text
.ListIndex = -1
KeyCode = 0
End If
End With
End If
End Sub
Il convient de modifier dans ce cas la procédure comme suit :Comment mettre ces valeurs en majuscule ?
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
With ComboBox1
If .Text <> '' And .ListIndex < 0 Then
.AddItem UCase(.Text)
.ListIndex = -1
KeyCode = 0
End If
End With
End If
End Sub
Effectivement Jopont, comme souvent dans ce genre de bricolage, 'Dynamique' veut dire éphémère...... dans le combobox, lorsque je rentre des données et que je ferme le fichier, je ne peux pas récupérer les valeurs à une nouvelle ouverture ?
Ci-joint, l'exemple modifié en conséquence...Private Sub UserForm_Initialize()
'Alimente le ComboBox avec la liste stockée précédemment
Dim L As Long
With Sheets('Param')
L = .Range('A65536').End(xlUp).Row
If L = 1 And .Cells(1, 1) = '' Then Exit Sub
ComboBox1.List() = .Range(.Cells(1, 1), .Cells(L, 2)).Value '(merci Hervé!)
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
With Sheets('Param')
'Recopie la liste dans la feuille 'Param' pour stockage
.Cells.Delete
.Range(.Cells(1, 1), .Cells(ComboBox1.ListCount, 1)) = ComboBox1.List()
End With
End Sub