Ajout ligne dans un tableau structuré

Bonsoir la team excel-pratique,

Ce soir, je souhaite savoir s'il est possible d'ajouter

En début d'un tableau structuré,

PLUSIEURS lignes,

Sans passer par une boucle,

En utilisant obligatoirement la procédure listrows.add

nbligne = 52
[Feuil1].ListObjects(1).ListRows.Add(1)

'un truc du genre
[Feuil1].ListObjects(1).ListRows.Add(1).Range(nbligne,) ???

D'avance merci

Bonjour,
Un exemple.
Cdlt.

12tomato.xlsm (19.05 Ko)
Sub Bouton1_Cliquer()
Dim tbl As ListObject, rng As Range
Const n As Long = 5

    Set tbl = Worksheets("Sheet1").ListObjects(1)
    Set rng = Range(tbl.Name & "[#All]").Resize(tbl.Range.Rows.Count + n, tbl.Range.Columns.Count)
    tbl.Resize rng

End Sub

Hello Jean-Eric, merci pour cette première réponse, mais les lignes ne s'insèrent pas au début

Bonsoir,

Un peu tiré par les cheveux mais bon.

Avant tout pourquoi pas de boucle ?

Public Sub TestAjoutLine()
    Dim lstO As ListObject
    Dim ws As Worksheet
    Const LinesToInsert As Integer = 3

    Set ws = ThisWorkbook.Sheets("Tests")
    Set lstO = ws.ListObjects("Tableau1")

    ws.Rows(lstO.HeaderRowRange.row + 1 & ":" & _
            lstO.HeaderRowRange.row + LinesToInsert).Insert Shift:=xlDown, _
            CopyOrigin:=xlFormatFromRightOrBelow
End Sub

[Feuil1].ListObjects(1).ListRows.Add(1).Range(nbligne,) ???

Ici Range représente la ligne ajoutée, tu peux référencer une colonne de la ligne exemple :

Sub testRange()
    Dim lstO As ListObject
    Dim ws As Worksheet
    Const LinesToInsert As Integer = 3

    Set ws = ThisWorkbook.Sheets("Tests")
    Set lstO = ws.ListObjects("Tableau1")

lstO.ListRows.Add(1).Range(1).Value = Application.Max(lstO.ListColumns("ID").DataBodyRange) + 1
End Sub

Ici nous calculons le max de la colonne 1 "ID" et nous rajoutons 1 pour incrémenter l'index par exemple

Bonjour à tous ,

Une autre manière :

Sub TS_insérer7LignesDebut()
   ActiveSheet.ListObjects(1).ListRows(1).Range.Resize(7).Insert xlDown
End Sub

Re,

Une procédure générique qui insère dans un tableau structuré TS le nombre de Nlig lignes vides soit au début du TS soit à la fin du TS. On inclut bien sûr le cas où le TS est vide (cas qui entraine souvent des erreurs).

La procédure s'appelle TS_insererLignes et possède trois paramètres :

  1. TS : c'est le tableau structuré concerné
  2. Nlig : c'est le nombre de lignes à insérer
  3. DebutFin : indique où insérer les lignes vides. Si DebutFin est négatif ou nul ou bien si cet argument est omis alors on insère les lignes au début du TS. Si cet argument est strictement positif alors on insère les lignes à la fin du TS

Cliquer sur le bouton Hop! pour voir des tests de cette procédure.

Le code de la procédure dans Module 1 (comme demandé aucune boucle n'est employée ) :

Sub TS_insererLignes(TS As ListObject, Nlig As Long, Optional DebutFin As Long = 0)
Dim vide As Boolean
   Application.ScreenUpdating = False
   If Nlig <= 0 Then Exit Sub
   If TS.ListRows.Count = 0 Then vide = True: TS.ListRows.Add
   If Sgn(DebutFin) < 0 Then
      ' Au début
      TS.ListRows(1).Range.Resize(Nlig).Insert xlDown
      If vide Then TS.ListRows(1).Delete
   Else
      ' A la fin
      TS.ListRows(1).Range.Resize(Nlig).Insert xlDown
      TS.ListRows(1).Range.Offset(Nlig).Resize(TS.ListRows.Count - Nlig).Cut
      TS.ListRows(1).Range.Insert shift:=xlDown
      If vide Then TS.ListRows(1).Delete
   End If
End Sub

Merci de votre aide la team (et désolé de ma réponse tardive...)

Mafraise ta première réponse me convient parfaitement et tu as fait du zèle avec ta procédure cléenmain. Il ne fallait pas t'embêter autant pour une si petite chose, je me sens gêné ahah

Merci à vous 3

Rechercher des sujets similaires à "ajout ligne tableau structure"