Ajouter une ligne dans un tableau

Bonjour

Dans mon exemple, je voudrai en code vba ajouter des articles dans la feuille articles à partir de la feuille ajout

J'ai chercher dans le forum mais je n'ai pas trouvé exactement

11article.xlsm (19.69 Ko)

ce que je voulais

merci pour votre aide

Bonjour

Un essai à tester. Te convient-il ?

9article-v1.xlsm (28.40 Ko)

Bye !

Bonjour tout le monde. Il était prêt, alors j'y GO.

10article2.xlsm (26.43 Ko)

Bonjour,

Et une autre proposition !...

Cdlt.

9article.xlsm (27.78 Ko)
Private Sub AjoutArticle_Click()
Dim lo As ListObject, r As Range, arr(2) As Variant, n As Double
    n = WorksheetFunction.CountA(Me.Cells(3, 5).Resize(3))
    If n = 3 Then
        Set lo = Worksheets("Articles").Range("Tab_articles").ListObject
        With lo
            If .InsertRowRange Is Nothing Then
                Set r = .HeaderRowRange.Cells(1).Offset(.ListRows.Count + 1)
            Else
                Set r = .InsertRowRange.Cells(1)
            End If
        End With
        With Me
            arr(0) = .Cells(3, 5).Value
            arr(1) = .Cells(4, 5).Value
            arr(2) = .Cells(5, 5).Value
        End With
        r.Resize(, 3).Value = arr
    Else
        MsgBox "Veuillez documenter tous les champs avant d'exécuter la procédure !", 64, "Information"
    End If
End Sub

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
Rechercher des sujets similaires à "ajouter ligne tableau"