Oui Thauthème, l'évènement Initialize remplace la propriété RowSource comme indiqué dans le post #20 …
cathodique, j'ai cru t'aider avec ma procédure ListBox1Maj en précisant pourtant de spécifier l'index de la ligne source
mais vu ce que tu en as fait - as-tu vu une variable globale dans mon code ?! - je préfère donc la supprimer …
Qui plus est, créer une variable globale pour la ligne est inutile vu qu'elle existe déjà au niveau de la ListBox : ListIndex !
Code de l'UserForm1 du classeur joint du post #1 sans créer de nouveau bouton, juste RowSource désactivée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Sub CmdExit_Click()
Unload Me
End Sub
Private Sub CmdListToXl_Click()
Feuil1.Cells(2, 1).Resize(ListBox1.ListCount, ListBox1.ColumnCount) = ListBox1.List
End Sub
Private Sub CmdVersListBox_Click()
With ListBox1
R& = IIf(.ListIndex = -1, .ListCount, .ListIndex)
If .ListIndex = -1 Then .AddItem Else .ListIndex = -1
For C& = 1 To .ColumnCount
.List(R, C - 1) = Controls("TextBox" & C).Text
Controls("TextBox" & C).Text = ""
Next
End With
TextBox1.SetFocus
End Sub
Private Sub ListBox1_Click()
For C& = 1 To ListBox1.ColumnCount
Controls("TextBox" & C).Text = ListBox1.List(ListBox1.ListIndex, C - 1)
Next
End Sub
Private Sub UserForm_Initialize()
With Feuil1.Cells(1).CurrentRegion
ListBox1.List = .Rows("2:" & .Rows.Count).Value
End With
End Sub |
Donc la procédure CmdVersListBox_Click liée au bouton Transfert vers ListBox
sert soit à créer une nouvelle ligne soit à modifier une ligne de la ListBox (après sélection dans la liste) …
Ce code, comme le précédent, fonctionne tel quel de mon côté sous la version 2003 comme la 2007.
Évidemment, après modification de votre côté, s'il ne fonctionne plus, ce n'est plus mon code …
_________________________________________________________________________________________________
Le pire des cons, c'est le vieux con : on ne peut rien contre l'expérience !