Bonjour…
On peut saisir directement (ou pas) les données d’une ligne très facilement. Le problème le plus délicat est de contrôler que celles-ci sont acceptables.
Pour prévoir un contexte beaucoup plus développé que celui présenté, je préfère passer par un formulaire (Userform) qui présente en plus l’avantage d’une vision globale du cadre étudié.
En voici un exemple (tableau renommé en TA
Dim R As Range, L As Long, n As Byte
Private Sub UserForm_Initialize()
Set R = ActiveCell
L = R.Row - [TA].Row + 1
C1 = L
End Sub
Private Sub C2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Application.CountIf([TA], C2) > 0 Then
MsgBox "déjà inscrit !", vbCritical, "Saisie invalide..."
C2 = "": Cancel = 1
End If
End Sub
Private Sub C3_KeyPress(ByVal K As MSForms.ReturnInteger)
If InStr("0123456789.,", Chr$(K)) = 0 Then K = 0
If K = 46 Then K = 44
If InStr(C3, ",") > 0 And K = 44 Then K = 0
End Sub
Private Sub Label4_Click()
[TA].Item(L, 1) = C1 : [TA].Item(L, 2) = C2 : [TA].Item(L, 3) = CCur(C3)
Unload Me
End Sub