Ajouter une ligne dans un tableau avec commandbutton

Bonjour le forum,

J'ai, pour but de facilité la saisie d'une nouvelle ligne (B6:I6), créer un commandbutton avec pour instruction (dans la feuil2) le rajout de la ligne dans le tableau distant (RACINE). Le problème c'est que la saisie ne s'effectue qu'à la ligne 38, et si une autre saisie est rajouté elle vient juste alimenter le tableau en cellule vide.

le code :

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

   Dim ListObj As ListObject, Sh As Worksheet, i As Long

    Set Sh = Sheets("BASE")
    Set ListObj = Sh.ListObjects("RACINE")
      i = Sh.Cells(Rows.Count, 1).End(xlUp).Row

    With ListObj
        Sh.Cells(i, 7) = Feuil2.Range("b6")
        Sh.Cells(i, 8) = Feuil2.Range("c6")
        Sh.Cells(i, 9) = Feuil2.Range("d6")
        Sh.Cells(i, 10) = Feuil2.Range("e6")
        Sh.Cells(i, 11) = Feuil2.Range("f6")
        Sh.Cells(i, 12) = Feuil2.Range("g6")
        Sh.Cells(i, 13) = Feuil2.Range("h6")
        Sh.Cells(i, 14) = Feuil2.Range("i6")
    End With
        ListObj.ListRows.Add

Application.ScreenUpdating = True

End Sub

Le fichier :

12test-formation.xlsm (54.58 Ko)

Merci d'avance pour le coup de main

Bonjour,

Tu pourrais tester la macro suivante :

Private Sub CommandButton1_Click()
Dim ListObj As ListObject, Sh As Worksheet
Dim ListLig As ListRow
Dim i As Long

    Set Sh = Sheets("BASE")
    Set ListObj = Sh.ListObjects("RACINE")
    Set ListLig = ListObj.ListRows.Add

    For i = 2 To 9
        ListLig.Range(1, i) = Feuil2.Cells(6, i)
    Next i

End Sub

En espèrant que cela t'aide

Bonjour James007,

Je viens de voir ta réponse, juste après avoir moi aussi trouvé la solution ^^

Private Sub CommandButton2_Click()

       Dim Ligne As Long, Ws As Worksheet

       Set Ws = Sheets("BASE")

         With Ws
        Ligne = .Range("F" & Rows.Count).End(xlUp).Row + 1
        .Range("G" & Ligne).Value = Feuil2.Range("b6")
        .Range("H" & Ligne).Value = Feuil2.Range("c6")
        .Range("I" & Ligne).Value = Feuil2.Range("d6")
        .Range("J" & Ligne).Value = Feuil2.Range("e6")
        .Range("K" & Ligne).Value = Feuil2.Range("f6")
        .Range("L" & Ligne).Value = Feuil2.Range("g6")
        .Range("M" & Ligne).Value = Feuil2.Range("h6")
        .Range("N" & Ligne).Value = Feuil2.Range("i6")

        End With

End Sub

Je test la tienne

Bonjour,

à tester,

Sub test()
Dim ListObj As ListObject, Sh As Worksheet, i As Long
Dim rw As Long, n As Integer

Set Sh = Sheets("BASE")
Set ListObj = Sh.ListObjects(1)

With ListObj.DataBodyRange
    rw = .Item(.Count).Row
    For i = .Item(1).Column To .Item(.Count).Column
         n = n + 1
        .Item(rw, i) = Sheets("Feuil2").Cells(6, n).Value
    Next
End With
End Sub

Bonjour,

Une autre proposition à étudier.

Il n'est pas nécessaire que le tableau RACINE comporte des lignes vides.

Cdlt.

Private Sub CommandButton1_Click()
Dim lo As ListObject, rCell As Range
    Set lo = Worksheets("BASE").ListObjects("RACINE")
    With lo
        If .InsertRowRange Is Nothing Then
            Set rCell = .HeaderRowRange.Cells(2).Offset(.ListRows.Count + 1)
        Else
            Set rCell = .InsertRowRange.Cells(2)
        End If
    End With
    rCell.Resize(, 8).Value = Feuil2.Cells(6, 2).Resize(, 8).Value
End Sub

Bonjour i20100, Jean Eric,

Vos deux macros fonctionnent parfaitement, merci !

re,

est ce que le problème est résolue ?

Rechercher des sujets similaires à "ajouter ligne tableau commandbutton"