Ajouter x lignes dans mon Tableau

Bonjour à vous tous,

J'ai un petit problème pour ajouter un nombre défini de lignes dans mon tableau d'un maniére automatique (VBA)

mon tableau peut se placer peu importe la colonne.

Je veut à la selection d'une cellule qu'il m'ajoute 10 lignes en dessous.

j'ai trouvé un conde intéressant mais je n'arrive as à l'adapter à mon besoin:

ce code ajoute uniquement une seule ligne

Merci pour votre aide

***************

Sub AjoutLigne()

 Dim NomTBL As

 String Dim TBL As ListObject

 Dim Entete As Long, Lig As Long, Diff As Long

 On Error GoTo Err If Not ActiveCell.ListObject Is Nothing Then 'Si la cellule active se trouve dans le scop d'un tableau alors : NomTBL = ActiveCell.ListObject.Name 'La variable NomTBL prend pour valeur le nom du tableau

 Set TBL = ActiveSheet.ListObjects(NomTBL) 'La variable TBL représente un object de type "Tableau"

 Entete = TBL.Range.Row 'La variable EnTete prend pour valeur la première ligne du tableau '(afin de psoition le tableau dans l'espace de la feuille)

 Lig = ActiveCell.Row 'La variable Lig prend pour valeur la ligne de la cellule active

 Diff = Lig - Entete 'La variable diff représente donc la position dans le tableau de là où une ligne doit-être insérée

 TBL.ListRows.Add (Diff + 1) 'Ajout d'une ligne

 End If

 Exit Sub Err: MsgBox "Impossible d'ajouter une ligne", vbCritical, "Erreur"

 End Sub

16test-tableau.xlsm (17.89 Ko)

Bonjour,

Les tableaux structurés ne sont pas prévus pour insérer des lignes vides !

Développe un peu pour expliquer ce que tu envisages de faire, il te sera probablement indiqué une autre méthode de conception.

Conseil : Quand vous joignez des classeurs faites en sorte qu'ils soient vraisemblables. Anonymisé ne veut pas dire sans queue ni tête ! Votre classeur doit rester compréhensible : Si on n'a pas besoin de connaitre les noms, Numéro de téléphone ou de carte bleue ni les adresses emails l'ensemble doit rester cohérents !

A+

Merci pour votre message

je viens d'ajouter un exemple

Merci

Bonjour,

Pour ajouter des lignes autant que le curé peut en bénir utilisez la macro ci dessous. Cependant vous ne devriez JAMAIS avoir besoin de générer plusieurs lignes vides : On ajoute une ligne en ajoutant des données à la ligne suivante...

Il est d'usage de ne pas utiliser le nom générique pour ce genre de tableau : J'ai renommé votre tableau TPays car il ne contenait qu'une colonne mais TList aurait aussi bien pu faire l'affaire...

Ce genre de tableau ne devrait pas être positionné n'importe ou :

Positionnez les systématiquement sur la première ligne et première colonne si c'est un tableau multi-colonnes prenez l'habitude de ne rien mettre d'autre sur la feuille. Si au contraire c'est une feuille de paramètres ou vous aurez plusieurs listes de 1 ou 2 colonnes mettez les toutes sur la première ligne avec une colonne vide pour séparer chaque tableau. et renommez les significativement.

Sub test()
Dim TData As ListObject
Set TData = Range("Tpays").ListObject
TData.ListRows.Add
End Sub

Cette autre formulation est acceptable :

Sub testx()
Dim TData As ListObject
Set TData = ActiveSheet.ListObjects(1)
TData.ListRows.Add
End Sub

Cependant vous ne devriez JAMAIS avoir besoin de générer plusieurs lignes vides : On ajoute une ligne en ajoutant des données à la ligne suivante...

Voici une manière correcte d'agrandir votre tableau :

Sub test2()
Dim TData As ListObject, LR, Z$
Set TData = Range("Tpays").ListObject
For i = 1 To 10
Set LR = TData.ListRows.Add
   Z = LR.Range.Offset(-1).Value
   LR.Range.Value = Left(Z, 1) & (Mid(Z, 2) + 1)
Next
End Sub
21test-macrovg.xlsm (17.11 Ko)

A+

bonjour Galopin01, Achraf12,

@Galopin01, moi, je mets souvent les totaux du tableau juste dessus le tableau, donc le tableau commence sur ligne 2.

Sub AjoutLigne()
     Dim LO, r, i
     On Error Resume Next
     Set LO = ActiveCell.ListObject 'cellule active fait partie d'un tableau structuré
     On Error GoTo 0
     If LO Is Nothing Then MsgBox "ce n'est pas un tableau structuré", vbCritical: Exit Sub
     With LO
          r = ActiveCell.Row - .Range.Row
          If r = 0 Then MsgBox "c'est l'entête !!!", vbInformation: Exit Sub
          For i = 1 To 10
               .ListRows.Add(r + i).Range.Range("A1").Value = "insérer_" & i
          Next
     End With
End Sub

PS. on peut supprimer cette ligne

 If r = 0 Then MsgBox "c'est l'entête !!!", vbInformation: Exit Sub

Merci pour sotre support

Rechercher des sujets similaires à "ajouter lignes mon tableau"