Bonjour Mahadey, bonjour le forum,
Plusieurs remarques :
• pourquoi E7, E8 dans l'UserForm alors qu'il n'apparaissent pas dans le tableau ?!...
• pourquoi V4 ne contient pas de formule et V5 en contient une qui fait référence à O4 ? Est-ce normal
J'ai utiliser la propriété [Tag] des TextBoxes en leur attribuant le numéro de la colonne qui leur correspond. La TextBox1 Nombre de Sacs doit avoir sa valeur reportée dans la colonne B (=2) donc la propriété [Tag] de la TextBox1 est égale à 2, etc...
Cela permet de boucler sur les contrôles et de récupérer/renvoyer les valeurs très rapidement et sans erreur.
Je n'ai pas compris le bouton Nouvelle Entrée. Du coup je l'ai supprimé. Le bouton VALIDER sert tant pour modifier que pour nouvelle entrée...
Le code :
Option Explicit
Private Ws As Worksheet
Private Sub UserForm_Initialize()
Dim DL As Long
Set Ws = Sheets("ELMIKI")
DL = Ws.Range("A" & Application.Rows.Count).End(xlUp).Row - 1 'à cause du Total
Me.ComboBox1.List = Ws.Range("A4:A" & DL).Value
End Sub
'Correspond au programme de la LISTE DEROULANTE
Private Sub ComboBox1_Change()
Dim LI As Long
Dim CTRL As Control
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
LI = Me.ComboBox1.ListIndex + 4
For Each CTRL In Me.Controls
If CTRL.Tag <> "" Then CTRL.Value = Ws.Cells(LI, CByte(CTRL.Tag)).Value
Next CTRL
End Sub
'Correspond au programme du bouton VALIDER
Private Sub CommandButton2_Click()
Dim LI As Long
Dim CTRL As Control
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
If MsgBox("Etes-vous cer ?", vbYesNo, "Demande de confirmation") = vbYes Then LI = Val(ComboBox1.ListIndex) + 4
For Each CTRL In Me.Controls
If CTRL.Tag <> "" Then Ws.Cells(LI, CByte(CTRL.Tag)).Value = CTRL.Value
Next CTRL
Unload Me
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Le fichier :