Re,
Une solution que j'utilise souvent c'est attribuer à la propriété [Tag] du contrôle, la valeur correspondant à la colonne ou sa valeur doit être renvoyé. Ça simplifie et ça ne dépend plus de l'ordre des contrôles. par exemple :
- la TextBox3 a comme propriété [Tag] la valeur 1,
- la TextBox2 a comme propriété [Tag] la valeur 2,
- la TextBox1 a comme propriété [Tag] la valeur 3,
Le code ci dessous permet de renvoyer les valeurs au bon endroit :
Dim CTRL As Control
Dim LI As Integer
LI = 2 'évidemment tu la définiras autrement
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Then
Cells(LI, Cint(CTRL.Tag)).Value = CTRL.Value
End If
Next CTRL
Idem pour récupérer des données d'une ligne dans l'userForm :
Dim CTRL As Control
Dim LI As Integer
LI = 2 'évidemment tu le définiras autrement
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Then
CTRL.Value = Cells(LI, CInt(CTRL.Tag))
End If
Next CTRL