Option Explicit
Private RngDon As Range, TVL(), LCou
Private Sub UserForm_Initialize()
Dim T(), L&
Set RngDon = Intersect(Feuil1.[A2:D20], Feuil1.UsedRange)
Actualiser
End Sub
Private Sub Actualiser()
T = RngDon.Columns(1).Value
For L = 1 To UBound(T, 1)
If VarType(T(L, 1)) = vbDouble Then T(L, 1) = CStr(T(L, 1))
Next L
CBxNom.List = T
End Sub
Private Sub CBxNom_Change()
If CBxNom.MatchFound Then
LCou = CBxNom.ListIndex + 1
TVL = RngDon.Rows(LCou).Value
Else
LCou = 0
ReDim TVL(1 To 1, 1 To RngDon.Columns.Count)
End If
GarnirAutresContrôles
End Sub
Private Sub GarnirAutresContrôles()
TextBox2.Text = TVL(1, 2)
TextBox4.Text = TVL(1, 3)
End Sub
Private Sub CommandButton1_Click()
TVL(1, 2) = TextBox2.Text
TVL(1, 3) = TextBox4.Text
If LCou = 0 Then
TVL(1, 1) = CBxNom.Text
LCou = RngDon.Rows.Count
RngDon.Rows(LCou).Copy
RngDon.Rows(LCou).Insert
LCou = LCou + 1
Actualiser
Else
TVL(1, 1) = CBxNom.Text
RngDon.Rows(LCou).Value = TVL
End If
End Sub